我正试图弄清楚如何做以下事情:
def foo(msf: String, o: Any, os: Any*) = {
println( String.format(msf, o :: List(os:_*)) )
}
Run Code Online (Sandbox Code Playgroud)
有一个原因,我必须单独声明方法o和一个os Seq.基本上,我最终得到了使用单个对象参数(类型List)调用的格式方法.尝试:
def foo(msf: String, o: Any, os: Any*) = {
println( String.format(msf, (o :: List(os:_*))).toArray )
}
Run Code Online (Sandbox Code Playgroud)
给我类型错误:
发现:数组[任意]
必需的Seq [java.lang.Object]
我尝试过编译,编译但失败的原因和第一个例子差不多.当我尝试
println(String.format(msg, (o :: List(os:_*)) :_* ))
Run Code Online (Sandbox Code Playgroud)
这无法使用隐式转换歧义进行编译(any2ArrowAssoc和any2stringadd)
在观看Nick Partidge关于导出scalaz的演示之后,我开始看这个例子,这真是太棒了:
import scalaz._
import Scalaz._
def even(x: Int) : Validation[NonEmptyList[String], Int]
= if (x % 2 ==0) x.success else "not even: %d".format(x).wrapNel.fail
println( even(3) <|*|> even(5) ) //prints: Failure(NonEmptyList(not even: 3, not even: 5))
Run Code Online (Sandbox Code Playgroud)
我试图了解<|*|>方法正在做什么,这里是源代码:
def <|*|>[B](b: M[B])(implicit t: Functor[M], a: Apply[M]): M[(A, B)]
= <**>(b, (_: A, _: B))
Run Code Online (Sandbox Code Playgroud)
好的,这是相当令人困惑的(!) - 但它引用了<**>声明的方法:
def <**>[B, C](b: M[B], z: (A, B) => C)(implicit t: Functor[M], a: Apply[M]): M[C]
= a(t.fmap(value, z.curried), …Run Code Online (Sandbox Code Playgroud) 显然有反射库,但我们还期望在下一版scala中看到什么?任何语言变化?有没有我可以看到路线图的网站?
我最近听到了很多关于Scala和Lift Web框架的好东西,尤其是来自Foursquare的人,因此我可能会在我的下一个项目中使用这项技术.
这值得么?在Scala/Lift平台上分享您的经验.
我们公司一直在考虑取消我们的面试程序,让每位候选人与一些程序员坐下来进行4-5个小时,然后进行一些配对编程.
我在理论上喜欢这个想法,但我不确定你怎么能真正让每个候选人都公平.你怎么评价他们?难道他们的输入真的不取决于每个程序员当天的工作吗?
任何关于这是一个好主意/坏主意或如何让它工作的想法都是我在这里寻找的.
干杯!
编辑:
结果 - 根据要求
我们将像以前一样进行面试的第一步.电话紧接着面对面.我们将带回3名开发人员与团队的所有7名成员坐在一起,而不是将他们带回第三次也是最后一次烧烤.我们决定让团队决定谁被雇用.
出于几个原因,我们得出了这个结论.我们相信这将使开发人员能够选择他们正在工作的人.第二个原因是群体动态.我们认为拥有一个良好的团队动力是非常重要的,直到你雇用一个人之后很难说,如果他们适合或不适合.
因此,最终的结果是我们将继续进行结对编程会议,但采用完全不同的方式,并采用与最初预期完全不同的方式.
对这种方法的任何想法或批评都非常受欢迎!(这个编辑作为下面的答案发布,所以如果你认为这不是最好的方法,请随时选择downvote)
我知道写入volatile变量会将其从所有cpus的内存中刷新,但是我想知道对volatile变量的读取是否和正常读取一样快?
可volatile变量永远被放置在CPU缓存或者它总是从主存储器中获取?
任何人都可以<:<在scala中提供有关运算符的一些细节.我认为:
if(apple <:< fruit) //checks if apple is a subclass of fruit.
Run Code Online (Sandbox Code Playgroud)
还有其他解释吗?我在scala源文件中看到了很多定义.
Scala中使用Java进行此类操作的模拟是什么:
public class Outer {
private Inner inner;
public static class Inner {
}
public Inner getInner() { return inner; }
}
Run Code Online (Sandbox Code Playgroud)
我特别希望我的内部阶级不必拥有一个完全限定的名字 - 即我想要的Trade.Type,不是TradeType.所以在Scala我想象它可能是这样的:
class Outer(val inner: Inner) {
object Inner
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用:我的scala Inner似乎从课外看不出来Outer.一个解决方案当然是:
class Inner
class Outer(val inner: Inner)
Run Code Online (Sandbox Code Playgroud)
这是确定-但因为我的课的名字,Inner真是的"类型" Outer和Outer实际上有一个很长的名字.所以:
class SomeHorriblyLongNameType
class SomeHorriblyLongName(myType: SomeHorriblyLongNameType)
Run Code Online (Sandbox Code Playgroud)
这是冗长而可怕的.我可以SomeHorriblyLongNameType用just 替换,Type但是它与它所涉及的类之间没有明显的联系.表示不快
人们如何看待在界面中使用的最佳指南?什么应该和不应该进入界面?
我听说有人说,作为一般规则,接口必须只定义行为而不是状态.这是否意味着接口不应包含getter和setter?
我的观点:对于制定者来说可能不是这样,但有时我认为吸气剂可以放在界面中.这仅仅是为了强制实现类来实现那些getter,以便表明客户端能够调用那些getter来检查某些东西,例如.
scala ×7
java ×4
scala-2.10 ×2
frameworks ×1
getter ×1
interface ×1
javabeans ×1
lift ×1
performance ×1
scala-2.8 ×1
scalaz ×1
setter ×1
static ×1
volatile ×1