在Prototype中,我可以使用以下代码显示"loading ..."图像:
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onLoading: showLoad, onComplete: showResponse} );
function showLoad () {
...
}
Run Code Online (Sandbox Code Playgroud)
在jQuery中,我可以将服务器页面加载到一个元素中:
$('#message').load('index.php?pg=ajaxFlashcard');
Run Code Online (Sandbox Code Playgroud)
但是如何像在Prototype中那样将加载微调器附加到此命令?
jquery language-interoperability spinner equivalence prototypejs
在编写自定义类时,通过==
和!=
运算符允许等效通常很重要.在Python中,这可以通过分别实现__eq__
和__ne__
特殊方法来实现.我发现这样做的最简单方法是以下方法:
class Foo:
def __init__(self, item):
self.item = item
def __eq__(self, other):
if isinstance(other, self.__class__):
return self.__dict__ == other.__dict__
else:
return False
def __ne__(self, other):
return not self.__eq__(other)
Run Code Online (Sandbox Code Playgroud)
你知道更优雅的做法吗?您是否知道使用上述比较方法的任何特殊缺点__dict__
?
注意:有点澄清 - 何时__eq__
和__ne__
未定义,您会发现此行为:
>>> a = Foo(1)
>>> b = Foo(1)
>>> a is b
False
>>> a == b
False
Run Code Online (Sandbox Code Playgroud)
也就是说,a == b
评估是False
因为它真的运行a is b
,是对身份的测试(即" a
与...相同的对象b
"). …
如果你在Python 3.7中执行以下语句,它将(从我的测试)打印b
:
if None.__eq__("a"):
print("b")
Run Code Online (Sandbox Code Playgroud)
但是,None.__eq__("a")
评估为NotImplemented
.
当然,"a".__eq__("a")
评估True
和"b".__eq__("a")
评估False
.
我最初在测试函数的返回值时发现了这个,但在第二种情况下没有返回任何内容 - 因此,函数返回了None
.
这里发生了什么?
我有一个像这样的表驱动测试用例:
func CountWords(s string) map[string]int
func TestCountWords(t *testing.T) {
var tests = []struct {
input string
want map[string]int
}{
{"foo", map[string]int{"foo":1}},
{"foo bar foo", map[string]int{"foo":2,"bar":1}},
}
for i, c := range tests {
got := CountWords(c.input)
// TODO test whether c.want == got
}
}
Run Code Online (Sandbox Code Playgroud)
我可以检查长度是否相同,并编写一个循环来检查每个键值对是否相同.但是当我想将它用于另一种类型的地图时(例如map[string]string
),我必须再次编写此检查.
我最终做的是,我将地图转换为字符串并比较字符串:
func checkAsStrings(a,b interface{}) bool {
return fmt.Sprintf("%v", a) != fmt.Sprintf("%v", b)
}
//...
if checkAsStrings(got, c.want) {
t.Errorf("Case #%v: Wanted: %v, got: %v", i, c.want, got)
}
Run Code Online (Sandbox Code Playgroud)
这假设等效映射的字符串表示是相同的,在这种情况下似乎是正确的(如果键是相同的,那么它们散列到相同的值,因此它们的顺序将是相同的).有一个更好的方法吗?在表驱动测试中比较两个映射的惯用方法是什么?
我一直在阅读Douglas Crockford的JavaScript:The Good Parts,我遇到了一个对我来说没有意义的奇怪例子:
'' == '0' // false
0 == '' // true
0 == '0' // true
false == undefined // false
false == null // false
null == undefined // true
Run Code Online (Sandbox Code Playgroud)
作者还提到"从不使用==
和!=
.而是始终使用===
和!==
".但是,他没有解释为什么表现出上述行为?所以我的问题是,为什么上面的结果是这样的?JavaScript中不考虑传递性吗?
在许多情况下,JavaScript的类型强制相等运算符不可传递.例如,请参阅" JavaScript等同传递性很奇怪".
但是,是否有任何情况下,在==
没有对称?也就是说,这里a == b
是true
和b == a
是false
?
javascript symmetric equivalence ecma262 comparison-operators
在数据库理论中,"冲突序列化"和"冲突等效"之间有什么区别?
我的教科书中有一个关于冲突可序列化的部分,但对冲突等同性进行了掩饰.这些可能都是我熟悉的概念,但我对术语不熟悉,所以我正在寻找解释.
我很想知道这两个在所有情况下是否在功能上是等效的.
是否有可能通过更改字典的默认比较器,这两者在功能上会有所不同?
而且,Keys.Contains
几乎不能保证更慢?
equivalence ×10
equality ×2
javascript ×2
python ×2
testing ×2
black-box ×1
c# ×1
c++ ×1
conflict ×1
database ×1
dictionary ×1
ecma262 ×1
go ×1
jquery ×1
maps ×1
performance ×1
prototypejs ×1
python-3.x ×1
serializable ×1
spinner ×1
string ×1
symmetric ×1
table-driven ×1
transitivity ×1