我有一个如下定义的简单特征:
trait MyTrait {
def myStringVal: String
}
Run Code Online (Sandbox Code Playgroud)
我的case类实现了这个特性如下:
case class MyCaseClass(myStringVal: String) extends MyTrait {
...
...
}
Run Code Online (Sandbox Code Playgroud)
来自Java世界,我发现有点难以理解MyCaseClass实际上只是通过定义MyCaseClass的参数来实现它.我知道你的字节代码实际上会编写getter和setter.但如果没有var或val,这怎么可能呢?
我的理解是,如果没有var或val,则不会生成getter或setter方法.在这种情况下,上面的案例类MyCaseClass如何实现myStringVal方法?
有时太多的Scala魔法难以理解,特别是遗留代码.
如何在此案例类中调用tupled方法?
case class(a: Int, b: String)(c: String, d: Int)
Run Code Online (Sandbox Code Playgroud)
我有这样的case类的原因是因为我想只使用前两个参数来考虑equals和hashCode比较!
那么如何在这样的案例类中正确调用tupled呢?
在进行sbt构建时,我开始看到以下警告消息:
[warn] Scala version was updated by one of library dependencies:
[warn] * org.scala-lang:scala-library:(2.11.1, 2.11.7, 2.11.2, 2.11.6, 2.11.5, 2.11.0) -> 2.11.8
[warn] To force scalaVersion, add the following:
[warn] ivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }
[warn] Run 'evicted' to see detailed eviction warnings
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我在0.13.11!
sbt版本有什么变化吗?我想我以前是在0.13.5,没有看到这种警告!
我有一组作为集群运行的Kafka代理实例.我有一个向Kafka生成数据的客户端:
props.put("metadata.broker.list", "broker1:9092,broker2:9092,broker3:9092");
Run Code Online (Sandbox Code Playgroud)
当我们使用tcpdump监控时,我可以看到只有与broker1和broker2的连接是ESTABLISHED,而对于broker3,我的生产者没有连接.我只有一个分区的单个主题.
我的问题:
经纪人数与主题分区之间的关系如何?我应该总是有经纪人数=分数吗?
为什么在我的情况下,我无法连接到broker3?或至少我的网络监控没有显示我的生产者与broker3建立的连接?
如果我能从生产者的立场深入了解与经纪人的联系是如何工作的,那将是很棒的.
是否有可能从外部对象初始化Scala对象?我正在尝试初始化的Scala对象没有任何Companion类.这是一个例子:
object ObjectA {
val mongoDBConnectionURI = // This is the Val that I want to initialize from an external object
....
....
}
Run Code Online (Sandbox Code Playgroud)
但是MongoDBConnectionURI类型的mongoDBConnectionURI需要一个主机和一个端口,我必须从配置文件中读取,实际上由对象B完成,这些值传递给ObjA.稍后我的所有DAO对象都将访问对象A中的mongoDBConnectionURI变量以获取连接字符串.如何将对象B中的值传递给对象A并将对象A中的val初始化?
是否有任何预定义的功能可以用来比较两个基于键的地图并给我区别?现在,我迭代Map1和foreach键,我检查Map2中是否有一个元素,我模式匹配以找到差异.有这么好的方法吗?
我有一个简单的Angular 4应用程序正在联系HTTP REST服务器,这个服务器只是返回一个JSON有效负载,我想在浏览器中显示这个JSON有效负载.这是我的makeRequest打字稿函数:
import { Component, OnInit } from '@angular/core';
import {Http, Response} from '@angular/http';
@Component({
selector: 'app-simple-http',
templateUrl: './simple-http.component.html'
})
export class SimpleHttpComponent implements OnInit {
data: string;
loading: boolean;
constructor(private http: Http) {
}
ngOnInit() {
}
makeRequest(): void {
this.loading = true;
this.http.request('http://jsonplaceholder.typicode.com/posts/1')
.subscribe((res: Response) => {
this.data = res.json();
this.loading = false;
});
}
}
Run Code Online (Sandbox Code Playgroud)
对http://jsonplaceholder.typicode.com/posts/1的调用会返回以下JSON:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et …Run Code Online (Sandbox Code Playgroud) 我有一个包含 Scala 和 SBT 的 Dockerfile,如下所示:
# Scala and sbt Dockerfile
# Scala and SBT forked from: https://github.com/hseeberger/scala-sbt
# Adds Docker client installation additionally
# Pull base image
FROM openjdk:$JAVA_VERSION
ARG SCALA_VERSION
ARG SBT_VERSION
# Scala expects this file
RUN touch /usr/lib/jvm/java-$JAVA_VERSION-openjdk-amd64/release
# Install Scala
## Piping curl directly in tar
RUN \
curl -fsL http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ && \
echo >> /root/.bashrc && \
echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc
# Install sbt
RUN \
curl …Run Code Online (Sandbox Code Playgroud) 我有一个在 GitHub 上托管的项目,我使用 scala-steward 来保持我的插件和依赖项最新。这在一段时间内有效,但现在使用此类自动更新却变成了一场噩梦。事情是这样的。在我的plugins.sbt中,我依赖于scoverage,它已由scala-steward更新到版本2.0.6。但是拉取请求未能通过编译阶段,我看到以下错误:
[error] (update) found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[error]
[error] * org.scala-lang.modules:scala-xml_2.12:2.1.0 (early-semver) is selected over {1.3.0, 1.2.0, 1.1.1, 1.0.6}
[error] +- org.scoverage:scalac-scoverage-reporter_2.12:2.0.7 (depends on 2.1.0)
[error] +- org.scalariform:scalariform_2.12:0.2.0 (depends on 1.0.6)
[error] +- org.scala-lang:scala-compiler:2.12.16 (depends on 1.0.6)
[error] +- com.typesafe.sbt:sbt-native-packager:1.5.2 (scalaVersion=2.12, sbtVersion=1.0) (depends on 1.1.1)
[error] +- com.typesafe.play:twirl-api_2.12:1.5.1 (depends on 1.2.0)
[error] +- com.github.sbt:sbt-native-packager:1.9.9 (sbtVersion=1.0, scalaVersion=2.12) (depends on 1.3.0)
[error]
Run Code Online (Sandbox Code Playgroud)
首先,最好在编译时报告此类不兼容性,以避免任何运行时意外。但是,我不确定如何解决这个问题。感觉就像我遇到了障碍。
编辑:这是我的实际项目:https ://github.com/joesan/plant-simulator
有什么参考,我可以找到如何为DateTimeOffset创建一个格式,使我能够生成这样的字符串?
2016-10-01T06:00:00.000000+02:00
Run Code Online (Sandbox Code Playgroud)
我有一个可以使用的DateTimeOffset,但我不确定如何格式化它以产生上面的字符串表示?