From 83d20b05f317732e208819118a3617cad41a950f Mon Sep 17 00:00:00 2001 From: sdlyu Date: Fri, 26 Sep 2014 15:11:06 +0800 Subject: Add chinese translate of LiveScript --- zh-cn/livescript-cn.html.markdown | 319 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 319 insertions(+) create mode 100644 zh-cn/livescript-cn.html.markdown (limited to 'zh-cn/livescript-cn.html.markdown') diff --git a/zh-cn/livescript-cn.html.markdown b/zh-cn/livescript-cn.html.markdown new file mode 100644 index 00000000..f6643447 --- /dev/null +++ b/zh-cn/livescript-cn.html.markdown @@ -0,0 +1,319 @@ +--- +language: LiveScript +filename: learnLivescript.ls +contributors: + - ["Christina Whyte", "http://github.com/kurisuwhyte/"] +--- + +LiveScript 是一种具有函数式特性且编译成 JavaScript 的语言,能对应 JavaScript 的基本语法。 +还有些额外的特性如:柯里化,函式组合,模式匹配,还有借镜于 Haskell,F# 和 Scala 的许多特点。 + +LiveScript 诞生于 [Coco][],而 Coco 诞生于 [CoffeeScript][]。 +LiveScript 目前已释出稳定版本,开发中的新版本将会加入更多特性。 + +[Coco]: http://satyr.github.io/coco/ +[CoffeeScript]: http://coffeescript.org/ + +非常期待您的反馈,你可以透过 +[@kurisuwhyte](https://twitter.com/kurisuwhyte) 与我连系 :) + + +```coffeescript +# 与 CoffeeScript 一样,LiveScript 使用 # 单行注解。 + +/* +*多行注解与 C 相同。使用注解可以避免被当成 JavaScript 输出。 +*/ +``` +```coffeescript +# 语法的部份,LiveScript 使用缩进取代 {} 来定义区块, +# 使用空白取代 () 来执行函数。 + + +######################################################################## +## 1. 值类型 +######################################################################## + +# `void` 取代 `undefined` 表示未定义的值 +void # 与 `undefined` 等价但更安全(不会被覆写) + +# 空值则表示成 Null。 +null + + +# 最基本的值类型数据是罗辑类型: +true +false + +# 罗辑类型的一些别名,等价于前者: +on; off +yes; no + + +# 数字与 JS 一样,使用倍精度浮点数表示。 +10 +0.4 # 开头的 0 是必要的 + + +# 可以使用底线及单位后缀提高可读性,编译器自动会略过底线及单位后缀。 +12_344km + + +# 字串与 JS 一样,是一种不可变的字元序列: +"Christina" # 单引号也可以! +"""Multi-line + strings + are + okay + too.""" + +# 在前面加上 \ 符号也可以表示字串: +\keyword # => 'keyword' + + +# 阵列是值的有序集合。 +fruits = + * \apple + * \orange + * \pear + +# 可以用 [] 简洁地表示阵列: +fruits = [ \apple, \orange, \pear ] + + +# 你可以更方便地建立字串阵列,并使用空白区隔元素。 +fruits = <[ apple orange pear ]> + +# 以 0 为起始值的数组下标获取元素: +fruits[0] # => "apple" + + +# 物件是无序键值对集合(更多给节将在下面章节讨论) 。 +person = + name: "Christina" + likes: + * "kittens" + * "and other cute stuff" + +# 你也可以用更简洁的方式表示物件: +person = {name: "Christina", likes: ["kittens", "and other cute stuff"]} + +# 可以透过键值获取值: +person.name # => "Christina" +person["name"] # => "Christina" + + +# 正则表达式的使用跟 JavaScript 一样: +trailing-space = /\s$/ # dashed-words 变成 dashedWords + +# 你也可以用多行描述表达式!(注解和空白会被忽略) +funRE = // + function\s+(.+) # name + \s* \((.*)\) \s* # arguments + { (.*) } # body + // + + +######################################################################## +## 2. 基本运算 +######################################################################## + +# 数值运算子与 JavaScript 一样: +1 + 2 # => 3 +2 - 1 # => 1 +2 * 3 # => 6 +4 / 2 # => 2 +3 % 2 # => 1 + + +# 比较运算子大部份也一样,除了 `==` 等价于 JS 中的 `===`, +# JS 中的 `==` 在 LiveScript 里等价于 `~=`, +# `===` 能进行物件、阵列和严格比较。 +2 == 2 # => true +2 == "2" # => false +2 ~= "2" # => true +2 === "2" # => false + +[1,2,3] == [1,2,3] # => false +[1,2,3] === [1,2,3] # => true + ++0 == -0 # => true ++0 === -0 # => false + +# 其它关系运算子包括 <、<=、> 和 >= + +# 罗辑值可以透过 `or`、`and` 和 `not` 结合: +true and false # => false +false or true # => true +not false # => true + + +# 集合也有一些便利的运算子 +[1, 2] ++ [3, 4] # => [1, 2, 3, 4] +'a' in <[ a b c ]> # => true +'name' of { name: 'Chris' } # => true + + +######################################################################## +## 3. 函数 +######################################################################## + +# 因为 LiveScript 是函数式特性的语言,你可以期待函数在语言里被高规格的对待。 +add = (left, right) -> left + right +add 1, 2 # => 3 + +# 加上 ! 防止函数执行后的回传值 +two = -> 2 +two! + +# LiveScript 与 JavaScript 一样使用函式作用域,且一样拥有闭包的特性。 +# 与 JavaScript 不同的地方在于,`=` 变数赋值时,左边的运算元永远不用变数宣告。 + +# `:=` 运算子在作用域里允许*重用*变数名并创建新的变数作用域。 + + +# 你可以解构函数的参数,从不定长度的参数结构里获取感兴趣的值。 +tail = ([head, ...rest]) -> rest +tail [1, 2, 3] # => [2, 3] + +# 你也可以使用一元或二元运算子转换参数。当然也可以预设传入的参数值。 +foo = (a = 1, b = 2) -> a + b +foo! # => 3 + +# 你可以以复制的方式传入参数来避免副作用,例如: +copy = (^^target, source) -> + for k,v of source => target[k] = v + target +a = { a: 1 } +copy a, { b: 2 } # => { a: 1, b: 2 } +a # => { a: 1 } + + +# 使用长箭号取代短箭号来柯里化一个函数: +add = (left, right) --> left + right +add1 = add 1 +add1 2 # => 3 + +# 函式里有一个隐式的 `it` 变数,意谓着你不用宣告它。 +identity = -> it +identity 1 # => 1 + +# 运算子在 LiveScript 里不是一個函数,但你可以简单地将它们转换成函数! +# Enter the operator sectioning: +divide-by-2 = (/ 2) +[2, 4, 8, 16].map(divide-by-2) .reduce (+) + + +# LiveScript 里不只有应用函数,如同其它良好的函数式语言,你可以合并函数获得更多发挥: +double-minus-one = (- 1) . (* 2) + +# 除了普通的数学公式合并 `f . g` 之外,还有 `>>` 和 `<<` 运算子定义函数的合并顺序。 +double-minus-one = (* 2) >> (- 1) +double-minus-one = (- 1) << (* 2) + + +# 说到合并函数的参数, LiveScript 使用 `|>` 和 `<|` 运算子将参数传入: +map = (f, xs) --> xs.map f +[1 2 3] |> map (* 2) # => [2 4 6] + +# 你也可以选择填入值的位置,只需要使用底线 _ 标记: +reduce = (f, xs, initial) --> xs.reduce f, initial +[1 2 3] |> reduce (+), _, 0 # => 6 + + +# 你也能使 _ 让任何函数变成偏函数应用: +div = (left, right) -> left / right +div-by-2 = div _, 2 +div-by-2 4 # => 2 + + +# 最后,也很重要的,LiveScript 拥有後呼叫特性, 它可以是基於回调的代码 +# (你可以试试其它函数式特性的解法,比如 Promises): +readFile = (name, f) -> f name +a <- readFile 'foo' +b <- readFile 'bar' +console.log a + b + +# 等同於: +readFile 'foo', (a) -> readFile 'bar', (b) -> console.log a + b + + +######################################################################## +## 4. 模式、判断和流程控制 +######################################################################## + +# 流程控制可以使用 `if...else` 表达式: +x = if n > 0 then \positive else \negative + +# 除了 `then` 你也可以使用 `=>` +x = if n > 0 => \positive + else \negative + +# 过於复杂的流程可以用 `switch` 表达式代替: +y = {} +x = switch + | (typeof y) is \number => \number + | (typeof y) is \string => \string + | 'length' of y => \array + | otherwise => \object # `otherwise` 和 `_` 是等价的。 + +# 函数主体、宣告式和赋值式可以表式成 `switch`,这可以省去一些代码: +take = (n, [x, ...xs]) --> + | n == 0 => [] + | _ => [x] ++ take (n - 1), xs + + +######################################################################## +## 5. 推导式 +######################################################################## + +# 在 JavaScript 的标准函式库里有一些辅助函数能帮助处理列表及物件 +#(LiveScript 则带有一个 prelude.ls ,作为标准函式库的补充 ), +# 推导式能让你使用优雅的语法且快速地处理这些事: +oneToTwenty = [1 to 20] +evens = [x for x in oneToTwenty when x % 2 == 0] + +# 在推导式里 `when` 和 `unless` 可以当成过滤器使用。 + +# 物件推导式在使用上也是同样的方式,差别在于你使用的是物件而不是阵列: +copy = { [k, v] for k, v of source } + + +######################################################################## +## 6. OOP +######################################################################## + +# 虽然 LiveScript 是一门函数式语言,但有具自一些命令式及面向物件语言的特性。 +# 像是 class 语法和一些借镜於 CoffeeScript 的类别继承语法糖: +class Animal + (@name, kind) -> + @kind = kind + action: (what) -> "*#{@name} (a #{@kind}) #{what}*" + +class Cat extends Animal + (@name) -> super @name, 'cat' + purr: -> @action 'purrs' + +kitten = new Cat 'Mei' +kitten.purr! # => "*Mei (a cat) purrs*" + +# 除了类别的单一继承模式之外,还提供了像混入( Mixins )这种特性。 +# Mixins 在语言里被当成普通物件: +Huggable = + hug: -> @action 'is hugged' + +class SnugglyCat extends Cat implements Huggable + +kitten = new SnugglyCat 'Purr' +kitten.hug! # => "*Mei (a cat) is hugged*" +``` + +## 延伸阅读 + +LiveScript 还有许多强大之处,但这些应该足够启发你写些小型函数式程式了。 +[LiveScript](http://livescript.net/)有更多关于 LiveScript 的资讯 +和线上编译器等着你来试! + +你也可以参考 +[prelude.ls](http://gkz.github.io/prelude-ls/),和一些 `#livescript` +的网路聊天室频道。 -- cgit v1.2.3 From 6de34992770654cdb2c7f8d61bd27131c3cb88db Mon Sep 17 00:00:00 2001 From: sdlyu Date: Fri, 26 Sep 2014 15:13:10 +0800 Subject: Fix typo --- zh-cn/livescript-cn.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'zh-cn/livescript-cn.html.markdown') diff --git a/zh-cn/livescript-cn.html.markdown b/zh-cn/livescript-cn.html.markdown index f6643447..c04805c9 100644 --- a/zh-cn/livescript-cn.html.markdown +++ b/zh-cn/livescript-cn.html.markdown @@ -22,7 +22,7 @@ LiveScript 目前已释出稳定版本,开发中的新版本将会加入更多 # 与 CoffeeScript 一样,LiveScript 使用 # 单行注解。 /* -*多行注解与 C 相同。使用注解可以避免被当成 JavaScript 输出。 + 多行注解与 C 相同。使用注解可以避免被当成 JavaScript 输出。 */ ``` ```coffeescript -- cgit v1.2.3 From 0c77c29c88f850d81a884d90a036c50931157782 Mon Sep 17 00:00:00 2001 From: sdlyu Date: Fri, 26 Sep 2014 16:16:19 +0800 Subject: Add translators information. --- zh-cn/livescript-cn.html.markdown | 3 +++ 1 file changed, 3 insertions(+) (limited to 'zh-cn/livescript-cn.html.markdown') diff --git a/zh-cn/livescript-cn.html.markdown b/zh-cn/livescript-cn.html.markdown index c04805c9..5a808807 100644 --- a/zh-cn/livescript-cn.html.markdown +++ b/zh-cn/livescript-cn.html.markdown @@ -3,6 +3,9 @@ language: LiveScript filename: learnLivescript.ls contributors: - ["Christina Whyte", "http://github.com/kurisuwhyte/"] +translators: + - ["ShengDa Lyu", "http://github.com/SDLyu/"] +lang: zh-cn --- LiveScript 是一种具有函数式特性且编译成 JavaScript 的语言,能对应 JavaScript 的基本语法。 -- cgit v1.2.3 From 221d72bcb06f1677b61e28dde430ba651fd896df Mon Sep 17 00:00:00 2001 From: sdlyu Date: Mon, 29 Sep 2014 10:30:40 +0800 Subject: Correct typo and rewrite the meaning of := --- zh-cn/livescript-cn.html.markdown | 102 +++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 51 deletions(-) (limited to 'zh-cn/livescript-cn.html.markdown') diff --git a/zh-cn/livescript-cn.html.markdown b/zh-cn/livescript-cn.html.markdown index 5a808807..fea00bc1 100644 --- a/zh-cn/livescript-cn.html.markdown +++ b/zh-cn/livescript-cn.html.markdown @@ -9,7 +9,7 @@ lang: zh-cn --- LiveScript 是一种具有函数式特性且编译成 JavaScript 的语言,能对应 JavaScript 的基本语法。 -还有些额外的特性如:柯里化,函式组合,模式匹配,还有借镜于 Haskell,F# 和 Scala 的许多特点。 +还有些额外的特性如:柯里化,组合函数,模式匹配,还有借镜于 Haskell,F# 和 Scala 的许多特点。 LiveScript 诞生于 [Coco][],而 Coco 诞生于 [CoffeeScript][]。 LiveScript 目前已释出稳定版本,开发中的新版本将会加入更多特性。 @@ -17,7 +17,7 @@ LiveScript 目前已释出稳定版本,开发中的新版本将会加入更多 [Coco]: http://satyr.github.io/coco/ [CoffeeScript]: http://coffeescript.org/ -非常期待您的反馈,你可以透过 +非常期待您的反馈,你可以通过 [@kurisuwhyte](https://twitter.com/kurisuwhyte) 与我连系 :) @@ -44,11 +44,11 @@ void # 与 `undefined` 等价但更安全(不会被覆写) null -# 最基本的值类型数据是罗辑类型: +# 最基本的值类型数据是罗辑类型: true false -# 罗辑类型的一些别名,等价于前者: +# 罗辑类型的一些别名,等价于前者: on; off yes; no @@ -58,55 +58,55 @@ yes; no 0.4 # 开头的 0 是必要的 -# 可以使用底线及单位后缀提高可读性,编译器自动会略过底线及单位后缀。 +# 可以使用底线及单位后缀提高可读性,编译器会自动略过底线及单位后缀。 12_344km -# 字串与 JS 一样,是一种不可变的字元序列: -"Christina" # 单引号也可以! +# 字串与 JS 一样,是一种不可变的字元序列: +"Christina" # 单引号也可以! """Multi-line strings are okay too.""" -# 在前面加上 \ 符号也可以表示字串: +# 在前面加上 \ 符号也可以表示字串: \keyword # => 'keyword' -# 阵列是值的有序集合。 +# 数组是值的有序集合。 fruits = * \apple * \orange * \pear -# 可以用 [] 简洁地表示阵列: +# 可以用 [] 简洁地表示数组: fruits = [ \apple, \orange, \pear ] -# 你可以更方便地建立字串阵列,并使用空白区隔元素。 +# 你可以更方便地建立字串数组,并使用空白区隔元素。 fruits = <[ apple orange pear ]> -# 以 0 为起始值的数组下标获取元素: +# 以 0 为起始值的数组下标获取元素: fruits[0] # => "apple" -# 物件是无序键值对集合(更多给节将在下面章节讨论) 。 +# 对象是无序键值对集合(更多给节将在下面章节讨论)。 person = name: "Christina" likes: * "kittens" * "and other cute stuff" -# 你也可以用更简洁的方式表示物件: +# 你也可以用更简洁的方式表示对象: person = {name: "Christina", likes: ["kittens", "and other cute stuff"]} -# 可以透过键值获取值: +# 可以通过键值获取值: person.name # => "Christina" person["name"] # => "Christina" -# 正则表达式的使用跟 JavaScript 一样: +# 正则表达式的使用跟 JavaScript 一样: trailing-space = /\s$/ # dashed-words 变成 dashedWords # 你也可以用多行描述表达式!(注解和空白会被忽略) @@ -121,7 +121,7 @@ funRE = // ## 2. 基本运算 ######################################################################## -# 数值运算子与 JavaScript 一样: +# 数值操作符与 JavaScript 一样: 1 + 2 # => 3 2 - 1 # => 1 2 * 3 # => 6 @@ -129,9 +129,9 @@ funRE = // 3 % 2 # => 1 -# 比较运算子大部份也一样,除了 `==` 等价于 JS 中的 `===`, +# 比较操作符大部份也一样,除了 `==` 等价于 JS 中的 `===`, # JS 中的 `==` 在 LiveScript 里等价于 `~=`, -# `===` 能进行物件、阵列和严格比较。 +# `===` 能进行对象、数组和严格比较。 2 == 2 # => true 2 == "2" # => false 2 ~= "2" # => true @@ -143,15 +143,15 @@ funRE = // +0 == -0 # => true +0 === -0 # => false -# 其它关系运算子包括 <、<=、> 和 >= +# 其它关系操作符包括 <、<=、> 和 >= -# 罗辑值可以透过 `or`、`and` 和 `not` 结合: +# 罗辑值可以通过 `or`、`and` 和 `not` 结合: true and false # => false false or true # => true not false # => true -# 集合也有一些便利的运算子 +# 集合也有一些便利的操作符 [1, 2] ++ [3, 4] # => [1, 2, 3, 4] 'a' in <[ a b c ]> # => true 'name' of { name: 'Chris' } # => true @@ -165,25 +165,25 @@ not false # => true add = (left, right) -> left + right add 1, 2 # => 3 -# 加上 ! 防止函数执行后的回传值 +# 加上 ! 防止函数执行后的返回值 two = -> 2 two! # LiveScript 与 JavaScript 一样使用函式作用域,且一样拥有闭包的特性。 -# 与 JavaScript 不同的地方在于,`=` 变数赋值时,左边的运算元永远不用变数宣告。 +# 与 JavaScript 不同的地方在于,`=` 变量赋值时,左边的对象永远不用变量宣告。 -# `:=` 运算子在作用域里允许*重用*变数名并创建新的变数作用域。 +# `:=` 操作符允许*重新賦值*父作用域里的变量。 # 你可以解构函数的参数,从不定长度的参数结构里获取感兴趣的值。 tail = ([head, ...rest]) -> rest tail [1, 2, 3] # => [2, 3] -# 你也可以使用一元或二元运算子转换参数。当然也可以预设传入的参数值。 +# 你也可以使用一元或二元操作符转换参数。当然也可以预设传入的参数值。 foo = (a = 1, b = 2) -> a + b foo! # => 3 -# 你可以以复制的方式传入参数来避免副作用,例如: +# 你可以以拷贝的方式传入参数来避免副作用,例如: copy = (^^target, source) -> for k,v of source => target[k] = v target @@ -192,52 +192,52 @@ copy a, { b: 2 } # => { a: 1, b: 2 } a # => { a: 1 } -# 使用长箭号取代短箭号来柯里化一个函数: +# 使用长箭号取代短箭号来柯里化一个函数: add = (left, right) --> left + right add1 = add 1 add1 2 # => 3 -# 函式里有一个隐式的 `it` 变数,意谓着你不用宣告它。 +# 函式里有一个隐式的 `it` 变量,意谓着你不用宣告它。 identity = -> it identity 1 # => 1 -# 运算子在 LiveScript 里不是一個函数,但你可以简单地将它们转换成函数! -# Enter the operator sectioning: +# 操作符在 LiveScript 里不是一個函数,但你可以简单地将它们转换成函数! +# Enter the operator sectioning: divide-by-2 = (/ 2) [2, 4, 8, 16].map(divide-by-2) .reduce (+) -# LiveScript 里不只有应用函数,如同其它良好的函数式语言,你可以合并函数获得更多发挥: +# LiveScript 里不只有应用函数,如同其它良好的函数式语言,你可以合并函数获得更多发挥: double-minus-one = (- 1) . (* 2) -# 除了普通的数学公式合并 `f . g` 之外,还有 `>>` 和 `<<` 运算子定义函数的合并顺序。 +# 除了普通的数学公式合并 `f . g` 之外,还有 `>>` 和 `<<` 操作符定义函数的合并顺序。 double-minus-one = (* 2) >> (- 1) double-minus-one = (- 1) << (* 2) -# 说到合并函数的参数, LiveScript 使用 `|>` 和 `<|` 运算子将参数传入: +# 说到合并函数的参数, LiveScript 使用 `|>` 和 `<|` 操作符将参数传入: map = (f, xs) --> xs.map f [1 2 3] |> map (* 2) # => [2 4 6] -# 你也可以选择填入值的位置,只需要使用底线 _ 标记: +# 你也可以选择填入值的位置,只需要使用底线 _ 标记: reduce = (f, xs, initial) --> xs.reduce f, initial [1 2 3] |> reduce (+), _, 0 # => 6 -# 你也能使 _ 让任何函数变成偏函数应用: +# 你也能使 _ 让任何函数变成偏函数应用: div = (left, right) -> left / right div-by-2 = div _, 2 div-by-2 4 # => 2 -# 最后,也很重要的,LiveScript 拥有後呼叫特性, 它可以是基於回调的代码 -# (你可以试试其它函数式特性的解法,比如 Promises): +# 最后,也很重要的,LiveScript 拥有後呼叫特性, 可以是基於回调的代码 +# (你可以试试其它函数式特性的解法,比如 Promises): readFile = (name, f) -> f name a <- readFile 'foo' b <- readFile 'bar' console.log a + b -# 等同於: +# 等同於: readFile 'foo', (a) -> readFile 'bar', (b) -> console.log a + b @@ -245,14 +245,14 @@ readFile 'foo', (a) -> readFile 'bar', (b) -> console.log a + b ## 4. 模式、判断和流程控制 ######################################################################## -# 流程控制可以使用 `if...else` 表达式: +# 流程控制可以使用 `if...else` 表达式: x = if n > 0 then \positive else \negative # 除了 `then` 你也可以使用 `=>` x = if n > 0 => \positive else \negative -# 过於复杂的流程可以用 `switch` 表达式代替: +# 过於复杂的流程可以用 `switch` 表达式代替: y = {} x = switch | (typeof y) is \number => \number @@ -260,7 +260,7 @@ x = switch | 'length' of y => \array | otherwise => \object # `otherwise` 和 `_` 是等价的。 -# 函数主体、宣告式和赋值式可以表式成 `switch`,这可以省去一些代码: +# 函数主体、宣告式和赋值式可以表式成 `switch`,这可以省去一些代码: take = (n, [x, ...xs]) --> | n == 0 => [] | _ => [x] ++ take (n - 1), xs @@ -270,15 +270,15 @@ take = (n, [x, ...xs]) --> ## 5. 推导式 ######################################################################## -# 在 JavaScript 的标准函式库里有一些辅助函数能帮助处理列表及物件 +# 在 JavaScript 的标准函式库里有一些辅助函数能帮助处理列表及对象 #(LiveScript 则带有一个 prelude.ls ,作为标准函式库的补充 ), -# 推导式能让你使用优雅的语法且快速地处理这些事: +# 推导式能让你使用优雅的语法且快速地处理这些事: oneToTwenty = [1 to 20] evens = [x for x in oneToTwenty when x % 2 == 0] # 在推导式里 `when` 和 `unless` 可以当成过滤器使用。 -# 物件推导式在使用上也是同样的方式,差别在于你使用的是物件而不是阵列: +# 对象推导式在使用上也是同样的方式,差别在于你使用的是对象而不是数组: copy = { [k, v] for k, v of source } @@ -286,8 +286,8 @@ copy = { [k, v] for k, v of source } ## 6. OOP ######################################################################## -# 虽然 LiveScript 是一门函数式语言,但有具自一些命令式及面向物件语言的特性。 -# 像是 class 语法和一些借镜於 CoffeeScript 的类别继承语法糖: +# 虽然 LiveScript 是一门函数式语言,但具有一些命令式及面向对象的特性。 +# 像是 class 语法和一些借镜於 CoffeeScript 的类别继承语法糖: class Animal (@name, kind) -> @kind = kind @@ -300,8 +300,8 @@ class Cat extends Animal kitten = new Cat 'Mei' kitten.purr! # => "*Mei (a cat) purrs*" -# 除了类别的单一继承模式之外,还提供了像混入( Mixins )这种特性。 -# Mixins 在语言里被当成普通物件: +# 除了类别的单一继承模式之外,还提供了像混入 (Mixins) 这种特性。 +# Mixins 在语言里被当成普通对象: Huggable = hug: -> @action 'is hugged' @@ -315,8 +315,8 @@ kitten.hug! # => "*Mei (a cat) is hugged*" LiveScript 还有许多强大之处,但这些应该足够启发你写些小型函数式程式了。 [LiveScript](http://livescript.net/)有更多关于 LiveScript 的资讯 -和线上编译器等着你来试! +和线上编译器等着你来试! 你也可以参考 [prelude.ls](http://gkz.github.io/prelude-ls/),和一些 `#livescript` -的网路聊天室频道。 +的网络聊天室频道。 -- cgit v1.2.3