小编soc*_*soc的帖子

为什么Scala在匿名类型之间没有明确的平等?

考虑以下代码:

val a = new { val x = 1; val y = 2 }
val b = new { val x = 1; val y = 2 }

a == b // false
Run Code Online (Sandbox Code Playgroud)

如果字段/方法/值相同,那么如果匿名类定义了一些会返回true的相等,那么这不是明智的吗?

我想这也可以减少Scala在某些用例中必须生成的类文件的数量.

(据我所知,如果匿名类型的C#在相同的顺序中具有相同的值,则它们使用相同的类,并且true当它们相互比较时返回.)

c# scala class equals anonymous-types

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

如何用Scala覆盖java.awt.Component中的字体?

我试过了

scala> class Foo extends Component { var font = new java.awt.Font("Helvetica", java.awt.Font.BOLD, 12) }
Run Code Online (Sandbox Code Playgroud)

我得到了:

<console>:10: error: overriding variable font in class Component of type java.awt.Font;
 variable font needs `override' modifier
       class Foo extends Component { var font = new java.awt.Font("Helvetica", java.awt.Font.BOLD, 12) }
                                         ^ 
Run Code Online (Sandbox Code Playgroud)

所以我试过了

scala> class Foo extends Component { override var font = java.awt.new Font("Helvetica", java.awt.Font.BOLD, 12) }
Run Code Online (Sandbox Code Playgroud)

但这根本没有帮助:

<console>:10: error: overriding variable font in class Component of type java.awt.Font;
 variable font has incompatible type
       class …
Run Code Online (Sandbox Code Playgroud)

java fonts components overriding scala

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

C# 的属性比 Java 的注释设计得更好吗?

在阅读了 Clinton Begin(iBatis 的创建者)的这篇旧文章后,我真的想知道他关于注释与属性的主张是否被广泛接受,或者是否存在分歧。

他的观点是:

  • 注释不可扩展
  • 不支持位置参数
  • 与 Java 不同的定义语法
  • annotation不是关键字(与 不同enum

这些说法有道理吗?C# 如何对此进行改进?

c# java attributes annotations language-design

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

让两个本地实例与Akka actor进行通信所需的最小代码是什么?

我想知道在一台机器上启动两个应用程序实例所需的最小代码是什么,它可以相互发送和接收消息.

据我了解,我需要

  1. 启动一个可以处理消息的actor.
  2. 告诉这个实例,还有另一个可以发送消息的实例.

我怎么能在Akka做1.和2.

messaging networking scala actor akka

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

是否可以声明一个对象并在Scala中稍后对其进行初始化

刚刚开始使用Scala进行单元测试,并提出了这个基本问题.

class Test {
  ClassToBeTested testObject;

  @Before
  void initializeConstructor() {
    testObject = new ClassToBeTested(//Blah parameters);
  }

  @Test
  //Blah
}
Run Code Online (Sandbox Code Playgroud)

Java中的上述示例显示我可以声明一个类型的对象ClassToBeTested并在以后初始化它.这可以在Scala中完成吗?我尝试过这个

class Test {
  var testObject = new ClassToBeTested()

  @Before def initializeConstructor() {
    //I do not know how to proceed here!!!!!!
  }

  @Test def testOne() {
    //Some test
  }
}
Run Code Online (Sandbox Code Playgroud)

我不想在里面做所有事情,testOne()因为我想在不同的测试中使用该对象.构造函数的参数是模拟,JUnit我知道如果我全局初始化一个对象而不是内部,则不会初始化模拟@Before.

scala

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

为什么Scala编译器更喜欢将值为null的参数推断为Array [Char]而不是Object?

考虑这些方法 java.lang.String

/**
 * Returns the string representation of the <code>Object</code> argument.
 *
 * @param   obj   an <code>Object</code>.
 * @return  if the argument is <code>null</code>, then a string equal to
 *          <code>"null"</code>; otherwise, the value of
 *          <code>obj.toString()</code> is returned.
 * @see     java.lang.Object#toString()
 */
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

/**
 * Returns the string representation of the <code>char</code> array
 * argument. The contents of the character array are copied; subsequent …
Run Code Online (Sandbox Code Playgroud)

java null interop scala overloading

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

为什么LINQ操作会丢失集合的静态类型?

无论我用作输入的集合类型,LINQ总是返回IEnumerable<MyType>而不是List<MyType>HashSet<MyType>.

MSDN教程:

int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

// numQuery is an IEnumerable<int> <====== Why IEnumerable<int> instead of int[]?
var numQuery =
    from num in numbers
    where (num % 2) == 0
    select num;
Run Code Online (Sandbox Code Playgroud)

我想知道决定不保留集合类型(如元素类型)的原因是什么,而不是建议的解决方法.

我知道toArray,toDictionarytoList存在,这不是问题.

编辑:C#中的实现与Scala的不同之处在于如何在不覆盖各地的返回类型的情况下工作?

c# linq collections types scala

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

Scala - 伴随对象&apply:不可理解的错误

我无法使用伴随对象创建表示XML解析文档的类.

这是该类的代码:

package models

import javax.xml.bind.Element
import scala.xml.Elem
import javax.xml.validation.SchemaFactory
import javax.xml.transform.stream.StreamSource


trait MyXML {

case class ElémentXML(code_xml: scala.xml.Elem) {

def validate: Boolean = {

try ({
  val schemaLang = "http://www.w3.org/2001/XMLSchema"
  val factory = SchemaFactory.newInstance(schemaLang)
  val schema = factory.newSchema(new StreamSource("Sites_types_libelles.xsd"))
  val validator = schema.newValidator()
  validator.validate(new StreamSource(code_xml.toString))
  true
}) catch {
  case t:Throwable => false
}
}



}

object ElémentXML {

def apply(fichier: String) {

  try{
  val xml_chargé = xml.XML.loadFile(fichier)
  Some(new ElémentXML(xml_chargé))
  }catch{
    case e:Throwable => None
  }
}
}

} …
Run Code Online (Sandbox Code Playgroud)

xml scala companion-object

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

Spring对方法的安全注释如何工作?

考虑以下代码:

import java.util.Collections;

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.userdetails.User;

public class SecureStuff {
    @PreAuthorize("#user.password == #oldPassword")
    public static void changePassword(User user, String oldPassword, String newPassword){
       System.out.print("Changing passwords ...");
    }

    public static void main(String[] args) {
        User joe = new User("Joe", "HansWurst", true, true, true, true, Collections.EMPTY_LIST);
        changePassword(joe, "HansWurst", "TeeWurst");
    }

}
Run Code Online (Sandbox Code Playgroud)

我在STS(SpringSource工具套件)中运行代码,它按预期工作.(它打印出来"Changing passwords ...".)然后我将密码重命名为其他东西,期待方法调用现在失败.

我已将该行添加<global-method-security pre-post-annotations="enabled"/>applicationContext-security.xml配置文件中.

我在这里错过了什么?

java authorization annotations spring-security

0
推荐指数
1
解决办法
1076
查看次数

复制两个空路径时会发生什么,为什么不抛出异常?

我真的很想知道这段代码是做什么的:

scala> import java.nio.file._
import java.nio.file._

scala> Files.copy(Paths.get(""), Paths.get(""))
res0: java.nio.file.Path = 
Run Code Online (Sandbox Code Playgroud)

不应该抛出一个NoSuchFileException

阅读JavaDoc揭示:

默认情况下,如果目标文件已存在或者是符号链接,则复制将失败,除非源和目标是同一文件,在这种情况下,方法完成而不复制文件.

但我不确定这是真正的原因,因为Files.copy(Paths.get("a"), Paths.get("a"))失败了.

java filesystems copy file path

0
推荐指数
1
解决办法
229
查看次数