Scala中语法糖的所有实例是什么?
它们很难搜索,因为它们中的大部分/全部都是纯符号,因此在不知道概念名称的情况下难以搜索.
去做:
_ 匿名函数的语法我发现Scala总是对任何东西都有"自然的解释".总是像"哦,但这只是一个函数被调用此函数和该对象与此参数".从某种意义上说,我们从其他语言中知道它并不是真正的编译器魔法.
我的问题是在以下代码中使用的< -运算符:
for(i <- 0 to 10) println(i)
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我可以看到它被重写为:
0.to(10).foreach((i:Int)=>println(i))
Run Code Online (Sandbox Code Playgroud)
但这并没有解释我如何进入foreach函数内的匿名函数.在你写i的时候,它不是一个对象,也不是一个声明的变量.那是什么呢,它是如何被带到foreach的内部的呢?
我的猜测是,我终于发现了一些实际上是编译魔术的东西
谢谢你的时间.
为了澄清,我的问题是:如何做的< -在代码的第一线操作人员的工作,因为我不上它可作为函数调用的对象.
Scala是一种有趣的语言,声称简洁,可扩展(通过在库中指定许多功能而不是编译器),并支持DSL.在尝试实现这一目标时,它有许多运算符和编译器调整(例如,支持中缀运算符,例如:_*以展平序列).
我发现很多运算符('Scala编程'索引中的2½页)和编译器调整令人困惑.公平地说,许多运算符是从C等人那里借来的传统算术/布尔运算符.
我被告知支撑这个有一些基本的句法规则,我认为如果我知道这些会降低我的认知负担.
是否有一些规则(如果是这样的话是什么)或者我注定要学习图书馆中的许多"操作员"方法和含义?
是否有scala等效的python __getattr__ / __setattr__(以及其他__*__方法?).有些东西是内置的还是一些特征?
如何实现一个可以像Array一样提问的类,提供索引的setter?
喜欢:
val k = new MyKls(size)
k(0) = 2 //<<-- I want this kind of functionality.
Run Code Online (Sandbox Code Playgroud)
谢谢.