所以我有一个python字典,调用它d1,以及稍后的一个字典版本,调用它d2.我想找到d1和之间的所有变化d2.换句话说,添加,删除或更改的所有内容.棘手的一点是值可以是整数,字符串,列表或字母,因此它需要是递归的.这是我到目前为止:
def dd(d1, d2, ctx=""):
print "Changes in " + ctx
for k in d1:
if k not in d2:
print k + " removed from d2"
for k in d2:
if k not in d1:
print k + " added in d2"
continue
if d2[k] != d1[k]:
if type(d2[k]) not in (dict, list):
print k + " changed in d2 to " + str(d2[k])
else:
if type(d1[k]) != type(d2[k]):
print k …Run Code Online (Sandbox Code Playgroud) 我正在开发一个吱吱声的应用程序,它根本不需要图形,它只是数据操作.问题是我在一个相当保守的环境中工作,我不认为我能够向我的经理们销售一个吱吱叫的应用程序(我觉得它们是明亮的颜色,圆形的界面和一般的"那是什么 - 那是 - 那个"吱吱的感觉会吓跑他们." 所以我正在考虑在GNU Smalltalk下运行应用程序,因为更"传统"的命令行界面不太可能吓跑利益相关者.
因此,任何人都可以提供或指向我,Squeak和Gnu Smalltalk之间的列表或一组功能/类是否兼容.换句话说,将应用程序从一个移植到另一个应用程序有多难(再次假设它是非图形的,所以不需要担心形态)?
谢谢!
所以我现在已经使用Smalltalk大约6个月了(Squeak和Pharo),主要是做数据分析,我即将开始我的第一个Seaside应用程序.所以你向所有Smalltalkers提出的问题是,你最喜欢的持久性解决方案是什么?我一直在看Magma,GOODS和GLORP.我是一个长期的python黑客,所以我得到ORM,但似乎Magma或GOODS将是一个更好的解决方案,因为它们看起来像面向对象.
快速说明:我想在多个VM上扩展我的应用程序,因此只需将数据保存到图像就不会真正起作用.
谢谢!
我有一个图形遍历问题,它在smalltalk中精美而优雅地建模,但对于一个smalltalk图像实例来说,它太大了(在计算和存储方面).所以,我想在多个实例之间划分问题.
我的问题是,有没有什么好方法可以在smalltalk实例之间发送消息.有点像MPI,但对于smalltalk.
我应该提一下,我正在使用Squeak,但是如果有一些具有这种功能的smalltalk,我可以应付.
所以我正在编写一个应用程序,其中一个对象具有一组转发消息的委托对象.这个想法是我可以说的
someObject sendMessage:aMessage
Run Code Online (Sandbox Code Playgroud)
并且aMessage将被发送给someObject的所有委托(对于aMessage的任何值).我能够做到这一点的唯一方法是:
sendMessage:aMessage
| sel chunks kwords arglist msg |
chunks := aMessage findTokens:' '.
kwords := Array new:(chunks size).
arglist := Array new:(chunks size).
1 to: (chunks size) do: [:i |
kwords at:i put:((chunks at:i) findTokens:':') at:1.
arglist at:i put:((chunks at:i) findTokens:':') at:2].
sel := ''.
kwords do:[:word | sel := sel,word,':'].
msg := Message selector:sel arguments:arglist.
delegates do:[:del | del perform:msg selector with:msg arguments].
Run Code Online (Sandbox Code Playgroud)
它有效,但必须有更好的方法.这个解决方案将参数限制为字符串,并且只是简单的丑陋.有谁知道更清晰,更好的转发消息的方式?
顺便说一下,我正在使用吱吱声,但是首选的是独立于实现的解决方案;)
编辑:我应该补充说,委托与对象属于同一类,所以我不能只重写DoesNotUnderstand:.
我有一个我在Scala中编写的库,它使用了Bouncy Castle并且拥有一大堆依赖项.当我滚动一个jar时,我可以滚动一个具有所有依赖关系(包括scala)的"胖"jar ,它的重量大约为19 MB,或者我可以滚动一个没有依赖关系的skinny jar,但只是几百KB.
问题是我需要在我的库中包含Bouncy Castle类/ jar,因为如果它不在运行时的类路径上,那么会抛出各种异常.
所以,我认为理想的情况是,如果有一些方法可以让Maven或SBT 在jar中包含一些但不是所有的依赖项.编译时需要一些依赖项,但在运行时不需要,例如Scala标准库.有没有办法让这种情况发生?
谢谢!
我有一些像这样的代码:
package something
import scala.actors.Actor
import scala.actors.Actor._
class Foo extends Actor {
private val random = new Random()
def doWork() {
if (self.mailboxSize >= 3) {
println("Actor loaded, use another node")
} else {
doSomething()
}
}
... more code
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它(fsc*.scala)时,我得到:
error: method mailboxSize in trait Reactor cannot be accessed in scala.actors.Actor
Access to protected method mailboxSize not permitted because
prefix type scala.actors.Actor does not conform to
class Foo in package something where the access take place
Run Code Online (Sandbox Code Playgroud)
mailboxSize受保护,但我应该能够在子类中访问它吗?
谢谢!
smalltalk ×4
squeak ×4
concurrency ×2
scala ×2
abstraction ×1
actor ×1
dictionary ×1
diff ×1
jar ×1
maven ×1
oop ×1
packaging ×1
persistence ×1
pharo ×1
porting ×1
python ×1
recursion ×1
sbt ×1
seaside ×1