我正在玩列表推导以更好地理解它们,我遇到了一些我无法解释的意外输出.我之前没有找到这个问题,但如果是/是/重复的问题,我道歉.
我本质上是在尝试编写一个生成生成器的生成器.使用列表推导的简单生成器如下所示:
(x for x in range(10) if x%2==0) # generates all even integers in range(10)
Run Code Online (Sandbox Code Playgroud)
我试图做的是编写一个生成两个生成器的生成器 - 第一个生成范围(10)中的偶数,第二个生成范围(10)中的奇数.为此,我做了:
>>> (x for x in range(10) if x%2==i for i in range(2))
<generator object <genexpr> at 0x7f6b90948f00>
>>> for i in g.next(): print i
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <genexpr>
UnboundLocalError: local variable 'i' referenced before assignment
>>> g.next()
Traceback (most recent call last):
File "<stdin>", line 1, in …Run Code Online (Sandbox Code Playgroud) 在abstract基类中,如果我们有一些static字段,那么它们会发生什么?
它们的范围是从这个基类继承的类,还是从它继承的类型(每个子类都有自己static的abstract基类副本)?
是否有POSIX兼容方法将变量的范围限制为声明的函数?即:
Testing()
{
TEST="testing"
}
Testing
echo "Test is: $TEST"
Run Code Online (Sandbox Code Playgroud)
应打印"测试是:".我已经阅读过declare,local和typeset关键字,但它们看起来并不像POSIX内置函数.
我是AngularJS的新手,我无法理解$scopeAngularJS中的内容.有人可以用最简单的方式解释$scopeAngularJS中的功能以及我们可以使用它做什么.请解释一下,你会解释一个完全没有编程知识的人.也有人可以用最简单的方式逐行解释下面的代码吗?
function MyController($scope) {
$scope.username = 'World';
$scope.sayHello = function() {
$scope.greeting = 'Hello ' + $scope.username + '!';
};
};
Run Code Online (Sandbox Code Playgroud) 我正在阅读GitHub上的Dagger2组件范围测试的源代码,我看到为被调用的活动定义了"自定义范围" @ActivityScope,但我在其他项目中看到了它,包括具有其范围的4模块CleanArchitecture@PerActivity.
但从字面上看,@ActivityScope注释的代码如下:
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Scope;
/**
* Created by joesteele on 2/15/15.
*/
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface ActivityScope {
}
Run Code Online (Sandbox Code Playgroud)
它在模块中"神奇地"可用:
@Module
public class ActivityModule {
@Provides @ActivityScope Picasso providePicasso(ComponentTest app, OkHttpClient client) {
return new Picasso.Builder(app)
.downloader(new OkHttpDownloader(client))
.listener(new Picasso.Listener() {
@Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception e) {
Log.e("Picasso", "Failed to load image: " + uri.toString(), e);
}
})
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
或者CleanArchitecture …
我想弄清楚这个:
c = 1
def f(n):
print c + n
def g(n):
c = c + n
f(1) # => 2
g(1) # => UnboundLocalError: local variable 'c' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
谢谢!
我相信这有一个简单的答案; 我似乎无法找到它.我在Ruby中创建了一个嵌套函数,但我无法从内部函数内部的外部函数访问变量:
def foo(x)
def bar
puts x
end
bar
42
end
foo(5)
Run Code Online (Sandbox Code Playgroud)
我得到:NameError: undefined local variable or methodx'为main:Object`
类似的Python代码有效:
def foo(x):
def bar():
print x
bar()
return 42
foo(5)
Run Code Online (Sandbox Code Playgroud)
那么我如何在Ruby中做同样的事情呢?
严格模式编译指示在ECMAScript5中有什么范围?
"use strict";
Run Code Online (Sandbox Code Playgroud)
我想这样做(主要是因为JSLint没有抱怨它):
"use strict";
(function () {
// my stuff here...
}());
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否会破坏其他代码.我知道我可以做到这一点,这将把pragma的范围扩展到函数...
(function () {
"use strict";
// my stuff here...
}());
Run Code Online (Sandbox Code Playgroud)
但JSLint抱怨它(当启用"严格"JSLint选项时),因为它认为您在启用"use strict"之前正在执行代码.
这是我的问题.如果我有fileA.js:
"use strict";
// do some stuff
Run Code Online (Sandbox Code Playgroud)
和fileB.js:
eval( somecodesnippet ); // disallowed by "use strict"
Run Code Online (Sandbox Code Playgroud)
然后将它们以相同的顺序包含在我的html页面中,将pragma限定为文件,还是将pragma放到fileB中,从而阻止eval执行?
在Bash中键入变量时,declare和之间有什么区别typeset?当一个函数内部使用:之间有什么区别declare和typeset和local?
我遇到的唯一区别是typeset可以移植到ksh脚本.除此之外,有什么理由说为什么一个人应该优先于另一个?
更新:添加local到问题.
这确实挑战了我调试R代码的能力.
我想ddply()用于将相同的函数应用于按顺序命名的不同列; 例如.a,b,c.为此,我打算重复将列名称作为字符串传递,并使用eval(parse(text=ColName))该函数来引用它.我从另一个答案中抓住了这个技术.
这很有效,直到我放入ddply()另一个功能.以下是示例代码:
# Required packages:
library(plyr)
myFunction <- function(x, y){
NewColName = "a"
z = ddply(x, y, summarize,
Ave = mean(eval(parse(text=NewColName)), na.rm=TRUE)
)
return(z)
}
a = c(1,2,3,4)
b = c(0,0,1,1)
c = c(5,6,7,8)
df = data.frame(a,b,c)
sv = c("b")
#This works.
ColName = "a"
ddply(df, sv, summarize,
Ave = mean(eval(parse(text=ColName)), na.rm=TRUE)
)
#This doesn't work
#Produces error: "Error in parse(text = NewColName) : object 'NewColName' not found"
myFunction(df,sv)
#Output in both …Run Code Online (Sandbox Code Playgroud)