我有一个变量x,我想测试x是否设置为NaN.我怎么做?
我的第一直觉可能就是测试它,就像这样:
if (x === NaN) { ...
Run Code Online (Sandbox Code Playgroud)
傻兔子,不,这太容易了.NaN在SQL中就像NULL,它不等于任何东西,甚至本身.
但是看,有一个叫做的函数isNaN()
- 也许会这样做!
不,据我所知,isNaN()
完全没有价值.
例如,isNaN([""])
正确返回false,但isNaN(["."])
返回true.你不想知道我是如何了解这个缺陷的.
我该怎么做呢?
下列
def mMatch(s: String) = {
var target: String = "a"
s match {
case `target` => println("It was " + target)
case _ => println("It was something else")
}
}
Run Code Online (Sandbox Code Playgroud)
不编译:
错误:需要稳定的标识符,但找到了目标.case
target
=> println("它是"+目标)
为什么Scala需要val
不是a var
.我猜"因为"是一个可以接受的答案,但我觉得我错过了更深层次的原因.
像我之前的许多愚蠢的先驱一样,我正在努力穿越理解Monads的无轨荒地.
我仍然蹒跚而行,但我不禁注意到Python的with
声明具有某种类似monad的质量.考虑这个片段:
with open(input_filename, 'r') as f:
for line in f:
process(line)
Run Code Online (Sandbox Code Playgroud)
将open()
调用视为"单元",将块本身视为"绑定".实际的monad没有暴露(呃,除非f
是monad),但模式就在那里.不是吗?或者我只是误将所有FP误认为是monadry?或者它只是凌晨3点,似乎有什么可信的?
一个相关的问题:如果我们有monad,我们是否需要例外?
在上面的片段中,I/O中的任何故障都可以从代码中隐藏.磁盘损坏,缺少指定文件和空文件都可以被视为相同.因此不需要可见的IO异常.
当然,Scala的Option
类型类已经消除了可怕的Null Pointer Exception
.如果你重新考虑作为Monads的数字(有NaN
和DivideByZero
作为特殊情况)......
就像我说的,早上3点.
我在服务器上设置了跨源资源共享(Jetty使用CrossOriginFilter),它在IE8和Firefox上运行良好.在Chrome上,它只是......没有.
$.ajax({ url : crossOriginURL,
type : "GET",
error : function(req, message) {
alert(message);
},
dataType : "json" } );
Run Code Online (Sandbox Code Playgroud)
调用错误函数,并显示有用的消息"error".它似乎正在提出请求,但没有任何你期望的标题.如果URL来自同一个来源,它可以正常工作.
有人可以解释一下,为什么我们在JavaScript中使用回调?我找到了示例,但它们可以通过使用普通函数来实现.使用它有什么好处?我得到了"如何"使用它的答案,而不是"为什么和何时"我们需要使用它.
通常,我发现它在AJAX中使用.在...上httpRequest.onreadystatechange
.这类似于Java的多线程吗?响应的听众如何以及在哪里?异步编程是否类似于多线程?
在以下代码中,控制流程如何:
function some_function(arg1, arg2, callback) {
var my_number = Math.ceil(Math.random() * (arg1 - arg2) + arg2);
callback(my_number);
some_different_function_not_callback(arg1);
}
some_function(5, 15, function(num) {
console.log("callback called! " + num);
});
Run Code Online (Sandbox Code Playgroud)
来自JQuery网站:
关于回调的特殊之处在于,在"父"之后出现的函数可以在回调执行之前执行"(参考:http://docs.jquery.com/Tutorials:How_jQuery_Works)
有人可以用一个例子向我解释这一行吗?
我想要做的是创建一个函数,它将采用泛型类并在其中使用静态方法(对不起Java语言,我的意思是它的伴随对象的方法).
trait Worker {def doSth: Unit}
class Base
object Base extends Worker
// this actually wouldn't work, just to show what I'm trying to achieve
def callSthStatic[T that companion object is <: Worker](implicit m: Manifest[T]) {
// here I want to call T.doSth (on T object)
m.getMagicallyCompanionObject.doSth
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
标题真的说明了一切.在某些(未确定的)条件下,FB.getLoginStatus()只是停止工作,不会调用我给它的回调.我发现的唯一有趣的线索是
alert()
打电话这样的轻微延迟往往会让它开始工作任何关于甚至如何调查此欢迎的提示.
我有我认为处理队列最常见的情况.我将读取队列的前面,对元素执行操作(这可能会导致更多元素添加到队列中),然后循环直到队列为空.
foreach
,但是没有,显然一个队列(甚至是一个可变的队列)是严格的,并且当迭代开始时,foreach循环遍历队列中的所有元素.while
循环的语法.你会认为它会是这样的
while (!q.isEmpty) {
var (e, q) = q.dequeue
... }
Run Code Online (Sandbox Code Playgroud)
会工作,除了我重新宣布q
.这确实有效:
while (!q.isEmpty) {
var (e, q1) = q.dequeue
q = q1
... }
Run Code Online (Sandbox Code Playgroud)
但男人,看起来不对 ......
这听起来像是一个琐事问题,但我真的需要知道.
如果您将HTML文件的URL放在浏览器的位置栏中,它将呈现该HTML.这是浏览器的全部目的.
如果你给它一个JPG,或一个SWF,甚至PDF,它将为这些数据类型做正确的事情.
但是,如果您给它一个JavaScript文件的URL,它将显示该文件的文本.我想要的是直接执行该文件.
现在,我知道如果你使用javascript:
协议,它将执行URL 的文本,但这不是我需要的.
我可以将URL指向由单个<script>
标记组成的HTML文件,而该标记又指向JavaScript文件,但出于我自己的隐藏原因,我不能这样做.
如果文件http://example.com/file.js
完全由
alert("it ran");
Run Code Online (Sandbox Code Playgroud)
我把那个URL放在位置栏中,我希望"它跑"以弹出警报.
我怀疑这是可能的,但我希望 - 反对 - 希望有一个标题或MIME类型或类似的东西我可以设置并奇迹般地实现这一点.
我有点难过这个问题是多么愚蠢而且有严重的思维空白,但我想我还是会问.
我有一个对象Foo,有几个字段.我想要一个可以更改其任何字段的方法,具体取决于作为参数传入的字段.像这样:
class Foo {
var x = 0
var y = 0
}
class Bar {
def changeFooField(field : Int) = {
field = 1
}
}
Run Code Online (Sandbox Code Playgroud)
我不能这样使用吗?:
changeFooField(foo.x)
Run Code Online (Sandbox Code Playgroud)
如果没有,我该如何做到这一点?