一个是另一个最好的做法吗?我一直在阅读Odersky等人的 Scala书.似乎infix用于很多Collections API函数,而dot则保留给程序员定义的函数.
我在Chrome控制台中运行了以下一对代码段,结果相同:
test = new function(){
var a = 1;
var b = 2;
var c = 3;
this.debugBase = function(){console.log('' + a + b + c)};
};
test
debugBase: function (){console.log('' + a + b + c)}
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
与:
test2 = new (function(){
var a = 1;
var b = 2;
var c = 3;
this.debugBase = function(){console.log('' + a + b + c)};
})();
test2
debugBase: function (){console.log('' + a + b + c)}
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?函数后的括号有什么意义吗?如果没有,为什么人们把它们放在那里?
我已经阅读了这篇相关文章,但没有太多具体的答案(或多或少的语言设计不好): 为什么静态方法不能在Java中抽象化
我有点像Scala的新人,这可能吗(可能有特征或什么)?
我尝试让我的基类扩展一个特征,但是当我真的希望它们需要在伴随对象中实现时,需要子类来实现抽象静态方法作为成员方法.
当由子类覆盖时,如何强制基本方法接受相同的特定子类实例?
即:
abstract class Animal {
def mateWith(that: Animal)
}
class Cow extends Animal {
override def mateWith...?
}
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,a Cow应该只能够mateWith另一个Cow.但是,如果我这样做override def mateWith(that: Cow),这实际上并没有覆盖基类方法(我想要它,因为我想强制它在子类中存在).
我可以检查以确保其他实例是Cow类型,并且如果不是则抛出异常 - 这是我最好的选择吗?如果我有更多的动物怎么办?我将不得不重复抛出异常的代码.
是否有一种优雅的方式来重新启动演员 - 即清除邮箱和内部状态?
我知道可以通过调用context.stop和重新初始化DeathWatch / Terminated消息来完成,但这有点笨拙.
我有一个基类,它有一个方法,创建一个子类的实例,调用与输入字符串相同.
之前通过将子类和基类放在同一个文件中,并执行类似的操作globals()[name].
但是,现在,我已将子类拆分为其他文件.它们每个都import base在顶部有一个语句,所以我不能简单地在我的基类中导入子类,或者只有一个循环导入链.
这有什么解决方法吗?
在base.py中:
from basefactory import BaseFactory
class Base:
def __init__(self, arg1, arg2):
...
def resolve(self, element):
className = typing.getClassName(element)
return BaseFactory.getInstance(className, element, self)
Run Code Online (Sandbox Code Playgroud)
在basefactory.py中:
from file1 import *
from file2 import *
...
class BaseFactory:
@staticmethod
def getInstance(name, arg1, arg2):
subclass = globals()[name]
return subclass(arg1, arg2)
Run Code Online (Sandbox Code Playgroud)
在file1.py中:
from base import Base
class subclass1(Base):
def foo(self):
return self.arg1
Run Code Online (Sandbox Code Playgroud) Scala中是否还有公共实例变量?我正在阅读Scala编程,其中包括Scala 2.8.如果我正确理解它,它声称2.8中的变量是默认公开的.
我现在正在尝试为2.9.1.final编写代码,现在默认情况下实例变量是私有的吗?但是public我没有关注的关键字.(有趣的是,似乎它曾经存在于2.x系列中的某个时间,但它在某个地方神秘地消失了.)
我错过了一些明显的东西吗
另外,通过扩展,是否有一种简单的方法可以将传递给类构造函数的变量声明为公共(因为现在它们似乎也具有默认的私有可见性)?
例:
class Instance(label: String, attributes: Array[Int]){
val f = 0
}
Run Code Online (Sandbox Code Playgroud)
Eclipse的声称label,attributes和f都是私有的.Scala 2.9.1.final被用作库.
有没有关于如何在Python中实现Python字符串函数的文档?
我知道str是一个内置模块,因此它的功能是用C实现的.但是不管它有代码吗?在Pypy怎么样?从我到目前为止所读到的,他们已经在Python中重新实现了许多内置模块.
示例问题:如何实现字符串的split方法?(没有编写我自己的实现)
编辑:我不是在寻找用C编写的实现(这是Python/CPython源代码中的默认实现).
scala ×5
inheritance ×2
python ×2
actor ×1
akka ×1
base ×1
call ×1
eclipse ×1
import ×1
javascript ×1
methods ×1
new-operator ×1
overriding ×1
public ×1
pypy ×1
scala-ide ×1
string ×1
subclass ×1
variables ×1