def metaclass; class << self; self; end; end
Run Code Online (Sandbox Code Playgroud)
有人可以为我解读这一行.我猜它被挤进一个的事实也没有多大帮助.但是在2天前开始看红宝石时,我担心我可能会错误地分开它.
以下内容无法编译.我需要先安排这个人吗?
object People {
def all = List(
new Person("Jack", 33),
new Person("John", 31) with Authority,
new Person("Jill", 21),
new Person("Mark", 43)
)
}
class Person(val name: String, val age: Int)
trait Authority {
def giveOrder {
println("do your work!")
}
}
object Runner {
def main(args:List[String]) {
val boss = People.all.find { _.isInstanceOf [Authority] }.get
boss.giveOrder // This line doesnt compile
}
}
Run Code Online (Sandbox Code Playgroud) 这编译
//legal
def s1 = List("aaa","bbb").collect { case x => x.split("\\w") }
Run Code Online (Sandbox Code Playgroud)
以下没有.
// all illegal
// missing parameter type for expanded function ((x$2) => x$2.split{<null>}("\\w"{<null>} {<null>}){<null>}
def s2 = List("aaa","bbb").collect ( _.split("\\w") )
// missing parameter type
def s3 = List("aaa","bbb").collect ( x => x.split("\\w") )
// type mismatch; found : String => Array[java.lang.String] required: PartialFunction[java.lang.String,?]
def s4 = List("aaa","bbb").collect ( (x:String) => x.split("\\w") )
Run Code Online (Sandbox Code Playgroud)
虽然scala编译器正在尽我所能与我沟通我的错误所在,但它正好在我脑海中.
事实也是如此
def s2 = List("aaa","bbb").find ( _.split("\\w").length > 2 )
Run Code Online (Sandbox Code Playgroud)
使用什么时更加令人困惑
这个例子来自Beginning Scala,但它对我来说并没有得到足够的解释.
val f: Int => String = x => "Dude: "+x
Run Code Online (Sandbox Code Playgroud)
我真的有两个问题:
1)第一个示例是否与下面的代码相同:
val f = (x:Int) => "Dude: "+x
Run Code Online (Sandbox Code Playgroud)
2)如果是这样,有人可以详细说明,并稍微剖析第一个例子.String = x部分抛弃了我.我不确定如何阅读该声明
我在ruby-doc上浏览RDoc信息时遇到了一些麻烦.现在它可能只是我,来自java世界,但我错过了什么?
例如,当我想要执行文件IO时,我查找文件并找到相应的页面.在那里,我看到所有的静态方法File.那很完美.我在这里找不到的是实际的实例方法fileInstance.read_line,我实际上是通过执行put来找到的fileInstance.methods
我想优化我的工作流程,我相信我会在未来几周内深入钻研ruby api,所以我在这里错过了一些东西吗?我在哪里可以找到api中的read_line示例?
谢谢
基于MDN 上关于新操作符如何工作的这些规范:
构造函数返回的对象成为整个 new 表达式的结果。如果构造函数没有明确返回对象,则使用在步骤 1 中创建的对象。(通常构造函数不返回值,但如果他们想覆盖正常的对象创建过程,他们可以选择这样做。)
我相信 new 运算符只会在未提供返回值的情况下覆盖返回值。然而,它似乎总是如此,你永远无法覆盖它。
例如
function test() { return 1; }
new test() // returns {} and not 1
Run Code Online (Sandbox Code Playgroud)
有人可以举例说明情况并非如此,例如他们在文档中所指的吗?