我正在讨论Scala样式指南中的多个参数列表.我已经认识到,有两种方式讨好,我想知道用例是什么:
def add(a:Int)(b:Int) = {a + b}
// Works
add(5)(6)
// Doesn't compile
val f = add(5)
// Works
val f = add(5)_
f(10) // yields 15
def add2(a:Int) = { b:Int => a + b }
// Works
add2(5)(6)
// Also works
val f = add2(5)
f(10) // Yields 15
// Doesn't compile
val f = add2(5)_
Run Code Online (Sandbox Code Playgroud)
风格指南错误地暗示这些是相同的,当它们显然不是时.该指南试图说明创建的curried函数,并且,虽然第二种形式不是"by-the-book"currying,但它仍然非常类似于第一种形式(尽管可以说更容易使用,因为你不需要的_
)
从那些使用这些形式的人那里,对于何时使用一种形式而不是另一种形式的共识是什么?
关于什么类型的归属,规范中没有太多信息,并且当然没有关于它的目的的任何信息.除了"使传递varargs工作",我会使用什么类型的归属?下面是一些scala REPL的语法和使用它的效果.
scala> val s = "Dave"
s: java.lang.String = Dave
scala> val p = s:Object
p: java.lang.Object = Dave
scala> p.length
<console>:7: error: value length is not a member of java.lang.Object
p.length
^
scala> p.getClass
res10: java.lang.Class[_ <: java.lang.Object] = class java.lang.String
scala> s.getClass
res11: java.lang.Class[_ <: java.lang.Object] = class java.lang.String
scala> p.asInstanceOf[String].length
res9: Int = 4
Run Code Online (Sandbox Code Playgroud) Java具有System.getProperty("user.home")
以独立于平台的方式获取用户"home"目录的便利性.Ruby中的等价物是什么?我没有Windows框可以玩,我觉得依靠文件名中的波浪号并不是最干净的方式.还有替代品吗?
我被要求在面试中编写代码/设计的东西.有时甚至提供代码示例.非常合理也非常明智(当这不会发生时总是感到惊讶)
我有一年左右的工作回到那里,代码非常糟糕,我不会接受这份工作,如果我看到了我必须提前处理的混乱.我不能告诉你我有多少可怕的数据库.
我不能要求他们提供代码示例并查看他们的数据库设计吗?假设我很乐意签署保密协议,我觉得在没有检查我正在使用的代码库或数据库的情况下找工作会很疯狂.
有人做过吗?
这将是我稍后在面试过程中会问的事情,如果事情进展顺利,我觉得即将提出要约.
这也是在小型商店或小型项目中工作的背景,因为我倾向于避免使用诸如"让开发人员离开地方"这样的短语的地方
我在Ruby中使用DSL,其工作原理如下:
desc 'list all todos'
command :list do |c|
c.desc 'show todos in long form'
c.switch :l
c.action do |global,option,args|
# some code that's not relevant to this question
end
end
desc 'make a new todo'
command :new do |c|
# etc.
end
Run Code Online (Sandbox Code Playgroud)
一位开发人员建议我将DSL增强到不需要传递c
给command
块,因此不需要c.
内部的所有方法; 据推测,他暗示我可以使下面的代码工作相同:
desc 'list all todos'
command :list do
desc 'show todos in long form'
switch :l
action do |global,option,args|
# some code that's not relevant to this question
end
end …
Run Code Online (Sandbox Code Playgroud) 我想通过改变背景颜色(或者只是一条线?)来突出显示vim中的包边/文本宽度.很多IDE都有这个.我嘲笑我在说什么:
有人知道这可以在macvim或gvim中完成吗?
Java中的方法签名:
public List<String> getFilesIn(List<File> directories)
Run Code Online (Sandbox Code Playgroud)
类似的红宝石
def get_files_in(directories)
Run Code Online (Sandbox Code Playgroud)
对于Java,类型系统为我提供了有关该方法所期望和提供的信息.在Ruby的情况下,我不知道我应该传递什么,或者我期望收到什么.
在Java中,该对象必须正式实现该接口.在Ruby中,传入的对象必须响应此处定义的方法中调用的任何方法.
这似乎很成问题:
不打算讨论静态打字与鸭子打字,而是希望了解如何维护一个几乎没有能力按合同设计的生产系统.
没有人真正通过这种方法所需的文档来解决方法内部实现的暴露问题.由于没有接口,如果我不期望某个特定类型,我不必逐条列出我可能调用的每个方法,以便调用者知道可以传入什么内容吗?或者这只是一个没有真正出现的边缘情况?
假设我有两个选项,如果两个都是Some,则执行一个代码路径,如果是note,则执行另一个.我想做点什么
for (x <- xMaybe; y <- yMaybe) {
// do something
}
else {
// either x or y were None, handle this
}
Run Code Online (Sandbox Code Playgroud)
在if
语句或模式匹配之外(如果我有两个以上的选项可能无法扩展),有没有更好的方法来处理它?
每
所述init
的方法NSDateFormatter
是"可用于iPhone OS 2.0通过iPhone OS 3.2",因此不在4.0.现在,它确实有效,但这看起来很奇怪.这是一个错误还是有其他方法来创建NSDateFormatter
?
非常方便的Ruby代码:
some_map.each do |key,value|
# do something with key or value
end
Run Code Online (Sandbox Code Playgroud)
Scala等价物:
someMap.foreach( entry => {
val (key,value) = entry
// do something with key or value
})
Run Code Online (Sandbox Code Playgroud)
不得不添加额外的val
行错误我.我无法弄清楚如何声明函数arg来提取元组,所以我想知道有没有办法做到这一点,或者为什么没有foreach为我提取关键和值?