基本上,我想将以下内容翻译成Seaside Smalltalk:
$(".myDiv").bind('click', function(e) {
console.log(e);
});
Run Code Online (Sandbox Code Playgroud)
除此之外,我不想参加console.log活动,而是在我的ajax回调中访问它.
最有希望的方法似乎是这样的
html div
onClick: (html jQuery ajax callback: [:v | self halt] value: (???);
with: 'Foo'.
Run Code Online (Sandbox Code Playgroud)
但我找不到任何方法来访问导致回调的事件.直观地说,我会尝试
html jQuery this event
Run Code Online (Sandbox Code Playgroud)
对于该???部分,但Seaside jQuery包装器不知道任何接近的消息event.
任何帮助表示赞赏.必须要去访问事件数据......
在Smalltalk中,系统浏览器是几乎任何东西的核心工具.Glamour似乎是使用声明性脚本语言构建通用浏览器的软件包.从论文中可以看到VisualWorks和Pharo,但我在这里只讨论Pharo版本.
除了Glamour相对于旧方法的技术优势之外,对于OmniBrowser的支持似乎在2011/2012年停止.所以从2009年开始的Glamour可能是OmniBrowser的合理继承者.但是有一个令人惊讶的惊喜:另一个"浏览器项目"被创建,它被称为Nautilus.
可能是因为开发人员注意到作为浏览器实现框架和类浏览器很难维护,OmniBrowser在Glamour中被"拆分"用于浏览器框架和Nautilus for Smalltalk Class Browsing.引自Nautilus chpater:"它的目的是浏览RPackage,与RB重构引擎兼容,具有环境意识并与公告合作"
通常的安装说明告诉我,我需要运行Pharo至少三个文件:
我没有源文件运行Pharo 2,我没有看到任何问题.所有来源似乎都是可用的.
那么,为什么我需要源文件(例如PharoV10.sources)?
每当我开始学习语言时,我做的第一件事就是生成一个用该语言编写的可执行文件(可能是一个已编译的程序或一个脚本),当运行打印'hello,world'和stdout的换行符时:
theironknuckle@beastbook:~/Code$ ./hello
hello, world
Run Code Online (Sandbox Code Playgroud)
在使用GNU Smalltalk大约一个小时后,我还没有发现如何做到这一点.
(我知道你好世界节目可以在会话中表达为
'hello, world' printNl
Run Code Online (Sandbox Code Playgroud)
这不符合我的标准要求)
据我所知,Smalltalk没有主线.所以我非常感兴趣的是可能需要什么类型的样板来实现它.同样,该文件不一定必须编译,但练习的最终结果必须是导致上述会话提取的smalltalk代码.
PS.yesyesyes 我知道我没有接受"基于图像的编程"哲学,这是错误的.我不在乎.我并不反对学习如何使用图像和IDE以及所有这些,但我现在对它的兴趣微乎其微.我关心的是Smalltalk语言本身.在语法上,哲学上和印刷上它是相当美丽的.从命令行解释器和文本编辑器学习编程语言我感到很自在.:)
鉴于作为独立计算引擎的对象的核心模型(存储是实例变量,CPU是类方法)响应从一个传递到另一个的消息,似乎Smalltalk自然适合于大量的并行处理核心.然而,这是一个Smalltalk确实非常弱的领域,它回应了自己的模拟多任务功能,这些功能没有利用现代处理器的硬件功能.
为什么是这样?主要问题是什么?可变性是关键,还是Smalltalk更具体的东西?
我正在阅读Smalltalk的介绍.在C++中,类中声明的函数可以由该类的对象调用,类似地,在Smalltalk中,一个关键字(称为message)与对象的名称相邻.(不知道多少,但也想在这里询问是否在回复消息时,是否有执行的独特方法?)
基本上,对于我天真的想法,这似乎只是语法风格的差异.但是,我想知道在内部编译或内存结构方面,这种调用的差异是否具有任何意义.
提前致谢.
PS:我向你们所有人倾诉你的时间和答案.非常感谢.
可能存在特定于方言的方式,或者可能存在通用方式。我有两本字典,让我们说:
a := {'a' -> 1} asDictionary.
b := {'b' -> 2} asDictionary.
Run Code Online (Sandbox Code Playgroud)
现在我想c成为aand的联合b。
这些字符的确切含义是什么?, ?, ¬, ?, ?, and ? 以及如何在 Smalltalk-80 中使用?
考虑以下表达式:(取自 smalltalk-80 源代码)
^self class ? x ? false^mem ? ¬448 ? 0strm frame ? 15000 ? frame origin y rect: 20000 ? frame corner y.neg ? (aStream ? 45 "-" ifTrue: [true] ifFalse: [aStream ? 21 "**¬**"]).注意:此示例是从以下链接中找到的原始施乐 Alto 磁盘中提取的:http : //bitsavers.trailing-edge.com/bits/Xerox/Alto/disk_images/
我目前对类方法Float>>asFraction及其各种形式提供的响应感到困惑。这里有一些例子:
0.001 asFraction
1/1000
0.001 asExactFraction
1152921504606847/1152921504606846976
Run Code Online (Sandbox Code Playgroud)
0.001 asFraction
1152921504606847/1152921504606846976
0.001 asTrueFraction
1152921504606847/1152921504606846976
0.001 asMinimalDecimalFraction
1/1000
0.001 asApproximateFraction
1/1000
Run Code Online (Sandbox Code Playgroud)
由于显而易见的原因,GNU的asFraction和菲罗的asMinimalDecimalFraction和asApproximateFraction做的最有意义的我,因为他们生产的,在数学上,更“精确”的结果。我不明白其他人。为什么具有大分子和分母但显然不太精确的值的分数是对 的响应asExactFraction?为什么我想要这样的回应?为什么在 Pharo 中,我选择asFraction还是选择似乎并不重要asTrueFraction?为什么会有这些变体?
如果我想将浮点数表示为一个分数,我想我会想要基于构成分子和分母的整数的精度类,或者可能基于最大分母的近似值。
我查看了蓝皮书,它几乎asFraction没有提到也没有提到任何变体。
如何将信息从一种对象的格式转换为另一种格式?
在Smalltalk的最佳实践模式由肯特·贝克,他沮丧“并称需要对每个对象的所有可能的方案,他们可能会问它”。相反,他建议从一个对象转换为另一个对象。
有人可以举一个例子来说明他所说的“压倒性对象协议”是什么意思吗?我试图了解这样做的坏方法,以便能够欣赏好的方法。
smalltalk ×10
pharo ×2
ajax ×1
collections ×1
compilation ×1
events ×1
fractions ×1
jquery ×1
oop ×1
precision ×1
seaside ×1
squeak ×1
stdout ×1
visualworks ×1