如果我的类有一个非空的构造函数,是否可以自动完成new表达式中的参数?
使用Eclipse时,如果在光标位于括号之间时按ctrl+ space:
MyClass myObject = new MyClass();
Run Code Online (Sandbox Code Playgroud)
它会找到合适的参数.
--> MyClass myObject = new MyClass(name, value);
Run Code Online (Sandbox Code Playgroud)
当我在使用ctrl+ shift+ spacebar之后new,Intellij向我展示了构造函数,但是我不能选择一个用于自动完成.我错过了一个选项吗?
有没有办法,只使用Scala集合API,在尝试通过索引获取元素时获取List中的Option?
我正在寻找相应的这个功能,它存在吗?
def optionalValue[T](l: List[T], index: Int) = {
if (l.size < (index+1)) None
else Some(l(index))
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试使用一些带隐式参数的方法来定义一个类:
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 …
我想使用SourceQueue将元素动态推送到Akka Stream源.Play控制器需要Source才能使用该chuncked方法传输结果.
由于Play使用自己的Akka Stream Sink,我无法使用Sink实现源队列,因为在方法使用之前源将被消耗chunked(除非我使用下面的hack).
如果我使用反应流发布器预先实现源队列,我能够使它工作,但它是一种"肮脏的黑客":
def sourceQueueAction = Action{
val (queue, pub) = Source.queue[String](10, OverflowStrategy.fail).toMat(Sink.asPublisher(false))(Keep.both).run()
//stupid example to push elements dynamically
val tick = Source.tick(0 second, 1 second, "tick")
tick.runForeach(t => queue.offer(t))
Ok.chunked(Source.fromPublisher(pub))
}
Run Code Online (Sandbox Code Playgroud)
是否有更简单的方法在PlayFramework中使用Akka Streams SourceQueue?
谢谢
我想将一系列Int转换为List或Array.我在Scala 2.8中使用此代码:
var years: List[Int] = List()
val firstYear = 1990
val lastYear = 2011
firstYear.until(lastYear).foreach(
e => years = years.:+(e)
)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有其他语法可能,为了避免使用foreach,我想在这部分代码中没有循环.
非常感谢!
卢瓦克
我已经使用猫0.2到猫0.6迁移了一些代码,我的代码不再畏缩了:
import cats.data.Validated
import cats.std.all._
val valid1: Validated[List[String], Int] = valid(1)
val valid2: Validated[List[String], Int] = valid(2)
(valid1 |@| valid2).map{_+_}
Run Code Online (Sandbox Code Playgroud)
编译说:
Error:(48, 6) value |@| is not a member of
cats.data.Validated[List[String],Int]
(valid1 |@| valid2).map{_+_}
^
Run Code Online (Sandbox Code Playgroud)
我没有在文档中找到任何关于此的内容,如果我有导入或声明隐含的或什么?
我设法使用product而不是|@|它产生嵌套元组不方便.假设我有4个经过验证可以合并:
(valid1 product valid2 product valid3 product valid4)
.map{case (((v1, v2), v3), v4) => v1 + v2 + v3 + v4}
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用隐式def来构建递归HList类型,以匹配几种更高级的类型HList.我很受这篇文章的启发.
这段代码完美运行:
sealed trait HList {
type Plus[L <: HList] <: HList
}
class HNil extends HList {
type Plus[L <: HList] = L
def ::[T](v: T) = HCons(v, this)
}
case class Appender[L1 <: HList, L2 <: HList, R <: HList](fn: (L1, L2) => R) {
def apply(l1: L1, l2: L2) = fn(l1, l2)
}
object HNil extends HNil
object HList {
def ++[L1 <: HList, L2 <: HList](l1: L1, l2: L2)(implicit f: …Run Code Online (Sandbox Code Playgroud) 有没有办法表达scala中任何函数的反函数?
例如,如果我有这样的函数f
(x:Int)=> x + 1
我想能够编写一个反函数g
(f(x):Int)=> x //不是有效的scala语法
要么
(x:Int)=> inverse(f(x))// inverse将返回(x => x -1)
你知道在scala中做这种事情的方法吗?
NB = x => x + 1仅用于示例我正在寻找解决此类任务的通用方法
谢谢!
使用classsication algorythm(例如naive bayes或SVM)和StringToWordVector,是否可以使用TF/IDF并计算整个当前类中的术语频率,而不是只查看单个文档?
让我解释一下,我希望计算能够给出给定类(不仅仅是给定文档)非常频繁但在整个语料库中不常见的单词的高分.
开箱即用还是需要一些额外的开发?
谢谢 :)
我在使我的HDFS设置在docker swarm中工作时遇到麻烦。为了理解问题,我将设置减少到最低限度:
此设置在docker-compose上运行良好,但在docker-swarm下使用相同的compose文件失败。
这是撰写文件:
version: '3'
services:
namenode:
image: uhopper/hadoop-namenode
hostname: namenode
ports:
- "50070:50070"
- "8020:8020"
volumes:
- /userdata/namenode:/hadoop/dfs/name
environment:
- CLUSTER_NAME=hadoop-cluster
datanode:
image: uhopper/hadoop-datanode
depends_on:
- namenode
volumes:
- /userdata/datanode:/hadoop/dfs/data
environment:
- CORE_CONF_fs_defaultFS=hdfs://namenode:8020
Run Code Online (Sandbox Code Playgroud)
为了对其进行测试,我仅在core-site.xml中使用此简单配置在主机(物理)计算机上安装了hadoop客户端:
<configuration>
<property><name>fs.defaultFS</name><value>hdfs://0.0.0.0:8020</value></property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后我运行以下命令:
hdfs dfs -put test.txt /test.txt
Run Code Online (Sandbox Code Playgroud)
使用docker-compose(只需运行docker-compose即可),它可以工作,并且文件以HDFS格式编写。
使用docker-swarm,我正在运行:
docker swarm init
docker stack deploy --compose-file docker-compose.yml hadoop
Run Code Online (Sandbox Code Playgroud)
然后,当所有服务启动时,我将文件放到HDFS上,失败如下:
INFO hdfs.DataStreamer: Exception in createBlockOutputStream
org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : …Run Code Online (Sandbox Code Playgroud) scala ×7
akka ×1
akka-stream ×1
docker ×1
docker-swarm ×1
function ×1
hadoop ×1
hdfs ×1
implicit ×1
inverse ×1
scala-cats ×1
scala-option ×1
weka ×1