小编kir*_*uku的帖子

将java.util.HashMap转换为java中的scala.collection.immutable.Map

我正在使用Java代码中的一些Scala库.我的收藏有问题.我需要传递scala.collection.immutable.Map作为方法的参数.我可以immutable.Map从我的Java代码转换或构建,但我不知道如何做到这一点.建议?

java scala scala-collections

22
推荐指数
4
解决办法
1万
查看次数

按下Enter键时,UISearchBar不会关闭键盘

UISearchBar不解雇时输入按下键盘或触摸用户别的地方.

我需要使用iOS键盘右下方的移除键盘按钮来移除键盘并调用:

- (void)searchBarTextDidEndEditing:(UISearchBar *)aSearchBar
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

objective-c ios

22
推荐指数
2
解决办法
2万
查看次数

如何在类级别为隐式参数提供默认值

我正在尝试使用一些带隐式参数的方法来定义一个类:

object Greetings {
  def say(name: String)(implicit greetings: String): String = greetings + " " +name 
}
Run Code Online (Sandbox Code Playgroud)

我从另一个班级使用这个班级

implicit val greetings = "hello"                //> greetings  : java.lang.String = hello
Greetings.say("loic")                           //> res0: String = hello loic
Greetings.say("loic")("hi")                     //> res1: String = hi loic
Run Code Online (Sandbox Code Playgroud)

我的问题是它只有在我的Greetings对象之外定义隐式val时才有效.我希望能够提供带有隐式参数的方法,在我的类中使用默认值,以便更容易地使用我的API(如Scala集合API).

所以我想这样做,但它不起作用(未找到隐含值):

object Greetings {
  implicit val greetings = "hello"    
  def say(name: String)(implicit greetings: String): String = greetings + " " +name 
}
Run Code Online (Sandbox Code Playgroud)

然后

Greetings.say("loic")                         
Greetings.say("loic")("hi") 
Run Code Online (Sandbox Code Playgroud)

我知道我可以定义一个默认值,(implicit greetings: String = "hello")但我想在类级别进行,以避免重复,如果有很多方法.

我想我错过了一些东西,因为我看到它CanBuildFrom是在List …

scala

21
推荐指数
2
解决办法
1万
查看次数

选项getOrElse类型不匹配错误

为什么此代码会在Scala 2.9.2中引发类型不匹配错误?我期望getOrElse返回类型,String但实际上它返回java.io.Serializable:

scala> implicit def StringToOption(s:String) = Option(s)
StringToOption: (s: String)Option[String]

scala> "a".getOrElse("")
res0: String = a

scala> var opt:Option[String] = "a".getOrElse("")
<console>:8: error: type mismatch;
 found   : java.io.Serializable
 required: Option[String]
       var opt:Option[String] = "a".getOrElse("")
                                             ^
Run Code Online (Sandbox Code Playgroud)

还行吧:

scala> implicit def StringToOption(s:String): Option[String] = Option(s)
StringToOption: (s: String)Option[String]

scala> var b:Option[String] = "a".getOrElse("") toString
b: Option[String] = Some(a)
Run Code Online (Sandbox Code Playgroud)

scala type-mismatch implicit-conversion

19
推荐指数
1
解决办法
1万
查看次数

为什么这种隐式转换是非法的?

我在scala中编写以下隐式转换:

  implicit def strToInt2(str: String):Int = {
    str.toInt
  }
Run Code Online (Sandbox Code Playgroud)

但它上升了这个编译错误:

<console>:9: error: type mismatch;
 found   : str.type (with underlying type String)
 required: ?{val toInt: ?}
Note that implicit conversions are not applicable because they are ambiguous:
 both method augmentString in object Predef of type (x: String)scala.collection.
immutable.StringOps
 and method toi in object $iw of type (str: String)Int
 are possible conversion functions from str.type to ?{val toInt: ?}
           str.toInt
           ^
Run Code Online (Sandbox Code Playgroud)

如果我删除了返回类型,只需声明它:

  implicit def strToInt2(str: String) = {
    str.toInt
  }
Run Code Online (Sandbox Code Playgroud)

它编译成功.谁能告诉我两者之间有什么区别?

scala implicit-conversion

17
推荐指数
1
解决办法
1299
查看次数

在Scala中,"应该启用结构类型成员方法的反射访问......"警告是什么意思?

切换到Scala 2.10后,我收到了大量的警告:

结构类型成员方法的反射访问...应该通过使隐式值language.reflectiveCalls可见来启用

这是什么意思?

scala scala-2.10

17
推荐指数
1
解决办法
4209
查看次数

计算泊松概率百分比

在Excel(或OpenOffice Calc)中使用POISSON函数时,它需要两个参数:

  • 整数
  • 一个'平均'数字

并返回一个浮点数.

在Python(我尝试过RandomArray和NumPy)中,它返回一个随机泊松数的数组.我真正想要的是这个事件将发生的百分比(它是一个常数,并且数组每次都有不同的数字 - 所以它是一个平均数?).

例如:

print poisson(2.6,6)
Run Code Online (Sandbox Code Playgroud)

返回[1 3 3 0 1 3](每次运行它都会有所不同).

我从calc/excel得到的数字是3.19(POISSON(6,2.16,0)*100).

我使用python的poisson错误(没有双关语!)或者我错过了什么?

python statistics poisson

16
推荐指数
2
解决办法
2万
查看次数

如何在Scala中处理POJO/JavaBean模式?

就像问题一样.scala是否像Java一样推广它?或者它已经演变成Scala的惯用语?或者它变得无关紧要了?

POJO和JavaBeans含义:

  1. 不带参数的构造函数
  2. 属性是私有的,getter和setter是公共的
  3. getter和setter定义属性,隐藏属性

此外,没有斯卡拉有意见(对不起,我不喜欢用这个词)上使用旧的public,private,protected属性的设计,是有关这个问题的?

scala

16
推荐指数
1
解决办法
8996
查看次数

为什么Set是一个函数?

在Scala中,a Set是一个函数:

trait Set[A] extends (A => Boolean)
Run Code Online (Sandbox Code Playgroud)

这使得不可能具有协变不可变Set因为类型A发生在逆变位置.相反Seq,未定义为函数.关于为什么以这种方式设计集合和序列的问题已经有一些内容:

一个答案说,其原因是数学背景.但这个答案没有多解释.那么,定义一个Set函数的具体优势是什么?如果以不同的方式实现它会有什么缺点?

math scala

15
推荐指数
2
解决办法
836
查看次数

Scala中嵌套列表的深度反转

我想在Scala中以递归方式反转列表列表.

我在Python中编写了深度列表反转,如下所示:

def deepReverse(items):
    if type(items) == list:
        return [deepReverse(item) for item in reversed(items)]
    else: 
        return items
Run Code Online (Sandbox Code Playgroud)

我如何在Scala中完成相同的操作?问题不在于算法 - 它是类型的东西,我是新的.

我需要函数将[T]或List [List [T]]的列表,或T的列表和Ts列表,任意深度.我尝试根据我在其他地方看到的一个例子来创建一个案例类.我不想要一个只返回Any并接受Any的函数; 感觉像是作弊.

case class NL[+T](val v : Either[List[NL[T]],T])
Run Code Online (Sandbox Code Playgroud)

尽管如此,我还是无法让我的类型得到平衡.我是Scala的新手,但我认为这是一个混乱递归和打字的绝佳机会.

recursion scala list

14
推荐指数
2
解决办法
833
查看次数