1、let 关键字用来声明标识符,标识符是值对象的名称,值对象可以是数字、字符串等也可以是方法。但标识符不同与变量,标识符一旦赋值则不可以改变。在同作用域下声明一个已经存在名称的标识符时,则是得到一个新的标识符。
let i = 1
let add x y = x + y
(注:在方法内声明一个与全局标识符同名的标识符时,会隐藏全局标识符的值,但当方法结束后,全局变量标识符的值还是原来的值。)
2、rec 递归函数在声明要加的关键字 (示例 从1加到100)
let rec addToNum x =
match x with
|1 -> 1
|x -> (addToNum x - 1) + x
printf "%i" (addToNum 100)
3、fun function 匿名方法关键字
let f = fun x y -> x + y // fun关键字定义的匿名方法参数可以任意个数
printf "%i" (f 1 2)
let ff = function x -> function y -> x + y //function定义的匿名方法最多只能有一个参数
printf "%i" (ff 1 2)
let fff = function (x,y) -> x + y //可以用元组将参数打包成一个参数
4、运算符重载 //但不知道为什么有些可用的运算符串组合会出语法错误
let (+*) x y= x * y
printfn "%A" (2 +* 4)
5、List 列表 , F# 的列表主要的操作符是[ ] , 列表一旦确定就不能再被改变 , 只会生成新列表 (类似C#字符串String)
let a = [] //a是一个空元组
let b = ["a" ; "b"]//b是一个含有两个元素的列表
let c = "c" :: b //将"c"和列表b连接起来 将单个元素和列表连接用::符号(两个冒号)
let d = "d"::"e"::[]
let e = "c" :: "d" :: d
let f = d @ e//将两个列表进行连接用@符号
List.rev list //将list列表元素反向后生成新列表
List.iter (fun x -> printf "%s" x) list //遍历list列表,用方法(fun x -> printf "%s" x)来处理
6、List Comprehensions 列表含概 操作符 .. (双英文句号) 默认只能从小到大 ,数字列表可以指定增长step值,当增长值为负数时可以得到从小到大的数字列表,但字符不行
let a = [ 1 .. 10 ] // [0;1;2;3;4;5;6;7;8;9;10]
let b = [ 'A' .. 'D'] // [ 'A' ; 'B' ; 'C' ; 'D']
let c = [1..3..7] //中间的3为增长step值 [1 ; 4 ; 7]
let d = [1..3..9] //结果还是 [1 ; 4 ; 7] 增长结果值不能直接等于9,取不超过9的最后一个值就是7
let e = [ 5 .. -1 .. 1] // 倒序列表[ 5 ; 4 ; 3 ; 2 ; 1 ]
7、用for语句产生List 或 Sequence
let a = [for x in 0..10 -> x] // [0;1;2;3;4;5;6;7;8;9;10]
let b = [for x in 0..5 do
for y in 0..5 -> x,y] //[(0,0);(0,1);(0,2);(0,3);(0,4);(0,5);(1,0);(1,1)........]
或者
let b = [for x in 0..5 do
for y in 0..5 ->( x,y)] //[(0,0);(0,1);(0,2);(0,3);(0,4);(0,5);(1,0);(1,1)........] 结果用元组
let a = seq{for x in 0..10 -> x} // seq[0;1;2;3;4;5;6;7;8;9;10]
let b = seq{for x in 0..5 do
for y in 0..5 -> x,y} //seq[(0,0);(0,1);(0,2);(0,3);(0,4);(0,5);(1,0);(1,1)........]
let c = [ for x in 1 .. 5 do if x%2=1 then yield x ] // [ 1 ; 3 ; 5 ]
let d = seq[ for x in 1 .. 7 do if x % 2 = 1 then yield x] // seq [ 1 ; 3 ; 5 ; 7 ]
分享到:
相关推荐
#python学习笔记.md
matlab学习笔记
:book:: vscode学习笔记vscode学习笔记问题: 解决配置markdown中settings.json仅可读问题解决方案:因为采用Ctrl+Shi
1、React Components:自定义react组件 2、Action Creators:申请操作数据命令 3、Store:Redux公共数据存储者和管理
( 1)实现js文件的异步加载,避免网页失去响应 (2)管理模块之间的依赖性,便于代码的编写和维护 (2)deps数组,表明该模块的依赖性
简介客户端像是调用本地方法一样直接调用另外一台不同机器上服务端应用的方法。可以使我们更容易的创建分布式的应用和服务。全称: Google Remote Proc
1. +号为类方法\ 2. -号为对象方法\ 3. 初始化数组时,nil表示数组结束\ 4. nil也表示,NSDictionary结束,要在数组和字典中表示n
1、预备知识 2、为何初始化 3、几种初始化方式 5、Tensorflow2.0中的权重初始化函数
第二列按数值大小排序 第二列相同的再按第一列的字母顺序的逆序排序(-r) 第一步所有行变为一行,这一步使用tr 是因为tr里面可以直接识别换行符,而sed不可以
分布式学习本文是对 MIT6.824的一个笔记 标注出要看的 paper 和对 paper 的一个简单描述. 用作个人复习和简单知道要讲啥,带着内容去听课.此论
1. 决策树Decision Tree(ID3决策树归纳算法) 2. 临近取样Nearest Neighbor(KNN) 3. 支持向量机Support Vec
第三章 数组3.1 一维数组数组大小const int number = 10;使用 sizeof 给出整个数组所占据的内容的大小,单位是字节:sizeof(a
Components 组件import React, { Component } from 'react'import { connect } from 're
1.前端控制器接收请求 2.前端控制器调用HandlerMapping(处理器映射器)根据url查找Handler 3.调用处理器适配器执行Handler,得到
#ssm 搭建笔记.md
RabbitMQ学习笔记:Connections、Channels、Queues之state状态连接、信道、队列状态如下:GitHub地址:https://gi
入门程序配置小结前端控制器配置:第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析第二种:/,所以访问的地址都由D
输出pojo对象list,方法返回值是List//根据用户名列查询用户列表生成的动态代理对象中是根据mapper方法的返回值类型确定是调用selectOne(返
CommonsBeanutils1笔记主要是有个比较好玩的地方在TemplatesImpl的getOutputProperties方法里面也调用了newTran
第一步:整合dao层 第二步:整合service层 第三步:整合springmvc