美文网首页程序员
快速开发大型 javascript 项目—reason(上)

快速开发大型 javascript 项目—reason(上)

作者: zidea | 来源:发表于2019-03-05 15:48 被阅读69次

    看过一些 reason 的视频教程,Reason 优势就是速度,开发速度。

    字符串

    let multilineGreeting = "Hello
     world!";
    

    字符串支持多行,

    字符串的连接

    let greetings = "Hello " ++ "world111!";
    

    Record

    • 更轻量级
    • 默认是不可变类型
    • 字段名称和类型是固定的
    • 高效
    type person = {age: int, name: string};
    let matthew:person = {
      age:30,
      name:"matthew"
    }
    

    注意为什么他是轻量级呢?因为编译 javascript 他编程了数组而不是对象。

    var matthew = /* record */[
      /* age */30,
      /* name */"matthew"
    ];
    

    集合

    let myArray = [|"hello", "world", "how are you"|]; 
    Js.log(myArray[3])
    
    Invalid_argument,-3,index out of bounds
    

    编译后,发现在编译的 javascript 文件多出了

    var Caml_array = require("bs-platform/lib/js/caml_array.js");
    

    Variant

    强大的功能,体验一下

    type myResponseVariant =
      | Yes
      | No
      | PrettyMuch;
    
    let areYouCrushingIt = No
    
    let message =
      switch (areYouCrushingIt) {
      | No => "No worries. Keep going!"
      | Yes => "Great!"
      | PrettyMuch => "Nice!"
      };
    
    

    体验一下的确挺强大,感觉自己有点喜欢 ocaml,看吧上面代码无论是看起来还写起来都是那么舒服。做分支语句好舒服呀。

    函数

    ocaml 应该是天生支持函数式编程,所以函数是重头戏,我们看一看。
    函数的声名使用箭头返回一个表达式

    let greet = (name) => "Hello " ++ name;
    
    Js.log(greet("matthew"))
    

    如果函数体是多行的呢,就用一个大括号

    let greetMore = (name) => {
      let part1 = "Hello";
      part1 ++ " " ++ name
    };
    

    我们可以为参数添加标签,在参数前面加上~,这样我们就可以调整顺序

    let addCoordinates = (~x, ~y) => {
      /* use x and y here */
    };
    /* ... */
    addCoordinates(~x=5, ~y=6);
    

    curry 化

    let add = (x, y) => x + y;
    let addFive = add(5);
    let eleven = addFive(6);
    let twelve = addFive(7);
    

    在 reason 函数是自动可以转换为偏函数,上面代码就是证明,暂时先不深究了。

    链式调用

    validateAge(getAge(parseData(person)))
    person
      ->parseData
      ->getAge
      ->validateAge
    

    相关文章

      网友评论

        本文标题:快速开发大型 javascript 项目—reason(上)

        本文链接:https://www.haomeiwen.com/subject/yahouqtx.html