小编Cor*_*ped的帖子

了解Scala中'type'关键字的作用

我是Scala的新手,我真的找不到关于这个type关键字的很多东西.我想了解下面的表达式可能意味着什么:

type FunctorType = (LocalDate, HolidayCalendar, Int, Boolean) => LocalDate
Run Code Online (Sandbox Code Playgroud)

FunctorType 是某种别名,但它意味着什么?

types scala

139
推荐指数
4
解决办法
6万
查看次数

Scala中泛型类型的模式匹配

我有scala函数,如下所示:

现在,根据T的类型(在我的情况下,它可以是Double,BooleanLocalDate),我需要应用函数ob.像这样的东西(我知道代码没有任何意义,但我想传达我的意思):

def X[T](ob: Observable[T]): Observable[T] = {
    //code  
    T match {
    case Double => DoSomething1(ob:Observable[Double]):Observable[Double]
    case Boolean => DoSomething2(ob:Observable[Boolean]):Observable[Boolean]
    case LocalDate => DoSomething3(ob:Observable[LocalDate]):Observable[LocalDate]
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到Scala的Erasure属性,可以用某种方式反射来完成工作吗?它甚至可能吗?

generics reflection scala pattern-matching erasure

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

有没有办法在IntelliJ中找到以前运行的输出?

每次我运行某个程序时,其他程序的上一次运行的输出似乎被新输出覆盖.有没有办法看到以前运行的程序的输出?

intellij-idea

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

在Scala中有一个'空'case语句是什么意思?

编译器如何解释这个?:

foo match {
  case bar: Bar => println("First case statement")
  case _ => 
}
Run Code Online (Sandbox Code Playgroud)

第二种情况是空的,没有任何回报.

syntax scala

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

给定范围,在Scala中获取该范围内的所有日期

我需要在scala中创建一个函数,给定一系列日期,给出一个范围列表.我在Scala中相对较新,我无法弄清楚如何为相同的'for'循环编写.这是我到目前为止所做的:

def calculateDates(from: LocalDate, until: LocalDate): Seq[LocalDate] = {
  var dateArray = []
  //for (LocalDate date <- from; !date.isAfter(to); date <- date.plusDays(1)) 
  for(date <- from to until)
  {
        dateArray :+ date
  }
  return dateArray 
} 
Run Code Online (Sandbox Code Playgroud)

我不知道如何迭代范围.

loops scala date

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

在scala中使用find函数

我想在一个Map中找到一个键,给出一个值.我正在使用'find'函数,因为它无法为它找出正确的谓词:

val colors = Map(1 -> "red", 2 -> "blue")
def keyForValue(map: Map[Int, String], value: String) = {
    val bool = map.find{map.foreach{map.values(i) == value}}
        bool.key
  }
Run Code Online (Sandbox Code Playgroud)

当我知道值时,如何迭代地图并找到密钥?

scala map

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

在Linux中工作时,在Python中模拟Ctrl-C键盘中断

我正在处理一些脚本(在我工作的公司中),这些脚本被加载/卸载到虚拟机管理程序中,以便在事件发生时触发一段代码.实际卸载脚本的唯一方法是点击Ctrl- C.我正在用Python编写一个自动化过程的函数

一旦它看到"done"程序输出中的字符串,就应该杀掉它vprobe.我subprocess.Popen用来执行命令:

lineList = buff.readlines()
cmd = "vprobe /vprobe/myhello.emt"
p = subprocess.Popen(args = cmd, shell=True,stdout = buff, universal_newlines = True,preexec_fn=os.setsid)
while not re.search("done",lineList[-1]):
        print "waiting"
os.kill(p.pid,signal.CTRL_C_EVENT)
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在buff以读/写模式打开文件描述符中的输出.我检查最后一行; 如果它有'done',我杀了它.不幸的是,CTRL_C_EVENT它仅适用于Windows.我能为Linux做些什么?

python linux kill

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

以下警告意味着什么:"不鼓励使用副作用的无效方法"?

我的scala测试文件中有很多nullary方法(带0参数的方法).因此,而不是将它们写成:

def fooBar() = //
Run Code Online (Sandbox Code Playgroud)

我把它们写成:

def fooBar = //
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下警告:

Warning:(22, 7) side-effecting nullary methods are discouraged: suggest defining as `def fooBar()` instead
Run Code Online (Sandbox Code Playgroud)

警告的含义是什么?我使用intelliJ作为我的IDE,并且在网上找不到这个警告.

编辑

而且,我忘了提及,当我使用括号时,警告不会出现.

parameters scala function intellij-idea

10
推荐指数
1
解决办法
1968
查看次数

在Scala中使用'=='而不是equals进行字符串比较

为什么建议在Scala中使用==而不是.equals字符串比较?StackOverflow中有很多问题不建议在Java中使用引用等式进行字符串比较,但为什么建议在Scala中进行完全相反的操作呢?

string scala equals

10
推荐指数
1
解决办法
5275
查看次数

以有序的方式合并scala中的两个序列

我试图合并两个序列,使它们保持排序.以下是我编写的代码:

  val seq1 = Seq(1,3,5,7,9)
  val seq2 = Seq(2,4,6,8)
  var arr = Seq[Int]()
  for(b <- seq2)
  {
    for(a <- seq1)
    {
      if(a < b)
        arr = arr :+ a
      else
      {
        arr = arr :+ b;break; 
      }
    }
  }
  println(arr)
Run Code Online (Sandbox Code Playgroud)

我需要的输出需要:

Seq(1,2,3,4,5,6,7,8,9)    
Run Code Online (Sandbox Code Playgroud)

但似乎break在Sc​​ala中不起作用.我对这门语言比较陌生.执行此操作的最佳方法是什么?

scala sequence

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