切达打高尔夫球的秘诀


12

切达

Cheddar是由我们的用户Downgoat创建的一种高级,功能性+面向对象的编程语言,旨在使编程更容易,更快和更直观。

您在切达(Cheddar)打高尔夫球有哪些一般提示?我正在寻找可以应用于问题并且至少在某种程度上特定于Cheddar的想法(例如,“删除不必要的空格。”不是答案)。

Answers:


3

使用功能化属性

如果您只在函数中使用属性:

A->A.long.property(n).foo.bar

您可以使用功能化的属性来保存一些字节:

@.long.property(n).foo.bar

您可以使用引用功能化属性中的变量$0


2

使用字符串运算符处理字符串序列

我说的是@"运算符,它执行不同的操作,所有操作都处理字符串。这有很多用途,但这是我最喜欢的用途之一:

看看这个:

@" [103, 111, 97, 116, 115] === "goats"

没什么用,但相反的是:

@"'goats' === [103, 111, 97, 116, 115]
'goats'.bytes // compare the above too

这对于生成字母特别有用:

65@"90    // Uppercase Alphabet
97@"122   // Lowercase Alphabet
65@"90+97@"122 // Both cases
String.letters // Compare 97@"122 to this

1

咖喱

并非不是红咖喱(其他咖喱您会想到¬_¬)。我的意思是这种咖喱:

a->b->

如果您的函数带有两个参数。咖喱要比不咖喱要短:

(a,b)->
a->b->

注意:仅当您有两个参数时,这才较短。


1

使用默认参数

声明Cheddar变量可能会浪费很多字节:

->{var a=b+1}

幸运的是,您可以(ab)使用函数默认值来创建变量:

b=a+1->b

以下是一些用法示例:

let f= (a,b=a+1)->b
f(5) // 6

let f= a=Math.rand()->a
f() // 0.8757450950797647

1

使用函数运算符和绑定

这很简单。如果您有任何类似的东西:

i->1+i

或任何类似的操作。您可以缩短使用函数运算符+绑定的时间:

1&(+)

1

使用映射运算符

=>映射LHS到RHS,由于它的优先级,这也意味着你可以使用的范围,并多次使用它:

a=>f
(a).map(f)

另外:

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.