在Smack API中,有一个用于连接的配置类,在此页面中进行了描述
我对服务名称和服务器名称之间的区别感到困惑.
假设我有一台名为"mybox.mydomain.com"的计算机,我在ejabberd上配置了一个名为"myhost"的主机(使用{hosts, ["myhost"]}.
ejabbed.cfg中的行),
在这种情况下,主机名,服务器名称和服务名称是什么?
这个问题与从java代码调用scala代码有关.
当我包含一些scala库(jar格式)时,返回类型通常是类型scala.collection
和其他Scala类型.
使用scala库在Java(在Netbeans中)进行开发时,在尝试查看Scala类型的文档时会出现以下"错误".
Javadoc not found. Either Javadoc documentation for this item does not exist or you have not added specified Javadoc in the Java Platform Manager or the Library Manager.
在分布式jar中包含javadocs(我的代码和scala-library)的最佳方法是什么?
我有以下奇怪的要求.
我给了:
toString
并获取字符串数组.对于该数组,该方法应用函数foo
.该函数foo
作为输入一个String []
类型和输出String
.方法返回返回的内容foo
.
foo
代码在Java对象中给出,并作为黑盒访问.1.和2.中的信息可以是文本或XML文件.为此,我们可以认为它以我们选择的任何方式在Java对象中可用.
任务是创建一个.class
实现这些方法的文件(即字节码),并且可以在JVM上运行.
我认为这个汇编程序库是一种方法.谁能建议一个更简单的方法?
[编辑:]我可以想到另一种方式:首先生成.java
文件,然后编译它以获取.class
文件.
[上下文:]我必须为数百种方法执行此操作.我想要快捷方式,这样我就可以自动完成工作而不是手动编写代码.
考虑以下:
scala> val a:java.lang.Boolean = true
a: java.lang.Boolean = true
scala> val b = true
b: Boolean = true
scala> a == b
res4: Boolean = true
scala> b == a
<console>:8: warning: comparing values of types Boolean
and java.lang.Boolean using `==' will always yield false
b == a
^
res5: Boolean = true
Run Code Online (Sandbox Code Playgroud)
警告说它会屈服false
但会产生收益true
.
Scala 2.8.
我正在尝试一种进行静态分析的工具.该工具适用于字节码而不是源代码.(但是,我也有源代码).
该工具从字节码输出一些行号,现在我需要一种简单的方法来映射回源代码.Netbeans/Eclipse一直这样做(当我点击包含库中的方法时,IDE会将我带到源(如果可用的话)),所以我知道这是可能的.我只是想办法做到这一点.
作为示例,请考虑以下hello world程序:
package mypackage;
import java.io.*;
class MyMainClass {
public static void main(String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String name0 = "Alice";
String name1 = "Bob";
try {
name0 = in.readLine();
}
catch(Exception e) {
System.out.println("Caught an exception!");
}
System.out.println("Hello " + name0 + "!");
System.out.println("Hello " + name1 + "!");
}
}
Run Code Online (Sandbox Code Playgroud)
生成的字节码(从javap获得)是:
Compiled from "MyMainClass.java"
class mypackage.MyMainClass extends java.lang.Object{
mypackage.MyMainClass();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void …
Run Code Online (Sandbox Code Playgroud) BNF或ABNF是否支持否定.那是否排除了某些成员?我的语法中没有看到任何这样的否定运算符.
例如,假设S
是集所有字母数字串即是不相等的,以"foo"
什么的BNF S
?
我有一个案例类Foo
定义如下.我想覆盖其中的行为==
,以便optBar
在比较中忽略最后一个元素().这是我尝试过的,似乎有效.
case class Bar(i:Int)
case class Foo(i:Int, s:String, optBar:Option[Bar]) {
override def equals(o:Any) = o match {
case Foo(`i`, `s`, _) => true
case _ => false
}
override def hashCode = i.hashCode*997 ^ s.hashCode * 991
}
val b = Bar(1)
val f1 = Foo(1, "hi", Some(b))
val f2 = Foo(1, "hi", None)
f1 == f2 // true
Run Code Online (Sandbox Code Playgroud)
我想知道的是创建方法hashCode
是否正确.我从这个链接得到了它.
说我有以下代码:
class Bar { def bar(b:Bar):Boolean = true }
def func(b:Bar) = b.bar(b)
Run Code Online (Sandbox Code Playgroud)
以上工作正常.该类Bar
在第三方库中定义,并且有几个类似的类,每个类都有一个bar
方法
class Foo { def bar(f:Foo):Boolean = false }
Run Code Online (Sandbox Code Playgroud)
func
我想要定义func
使用泛型类型B
,而不是为每个这样的类编写,只要它有一个bar
正确签名的方法.
我尝试了以下但它给了我一个错误:
def func[B <: {def bar(a:B):Boolean}](b:B) = b.bar(b) // gives error
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
<console>:16: error: Parameter type in structural refinement may not refer to
an abstract type defined outside that refinement
def func[B <: {def bar(a:B):Boolean}](b:B) = b.bar(b)
^
Run Code Online (Sandbox Code Playgroud)
但是,如果我执行以下操作,方法定义仍然有效,但调用会产生错误:
def func[B <: {def bar(a:Any):Boolean}](b:B) = b.bar(b) …
Run Code Online (Sandbox Code Playgroud) 我需要在Scala中读取一个大文件并以k位为单位处理它(k通常可以是65536).作为一个简单的例子(但不是我想要的):
文件块是(f1, f2, ... fk)
.
我想计算 SHA256(f1)+SHA256(f2)+...+ SHA256(fk)
这种计算可以仅使用恒定存储和当前块递增地完成,而不需要其他块.
阅读文件的最佳方法是什么?(也许是使用延续的东西?)
编辑:链接的问题解决了问题但不总是,因为我正在查看的文件包含二进制数据.
以下代码在Scala 2.8中工作正常,但在2.9.0.1中没有(在REPL中复制和粘贴).这将在2.9.0.1中引发异常.
import scala.actors.Actor
import scala.actors.TIMEOUT
object A2 extends Actor {
def act = {
loop {
react {
case "hello" =>
val s = sender
reactWithin(2000){
case i:Int => s ! "hello"
case TIMEOUT => s ! "TIMEOUT"
}
case _ =>
}
}
}
}
object A1 extends Actor {
def act = {
loop {
react {
case m:String => println (A2 !? (1000, m))
case _ =>
}
}
}
}
A1.start
A2.start
A1 ! "hi" …
Run Code Online (Sandbox Code Playgroud)