我有一个问题,是否可以(如果是,如何)class从Func<T, TResult>代表内部访问成员.
例如,我有以下内容class:
class NinjaTurtle
{
public string Sound { get; set; }
public Func<string, string> DoNinjaMove { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想这样做
NinjaTurtle leonardo = new NinjaTurtle();
leonardo.Sound = "swiishhh!";
leonardo.DoNinjaMove = (move) => {
if(move == "katana slash") return leonardo.Sound;
return "zirp zirp zirp";
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我定义回调函数时,如何正确访问属性Sound?从函数外部使用对实例的引用是否可以?当我将对象传递给另一个方法时,或者当这将成为dll的一部分时,这仍然有用吗?我会从dll中的函数返回对象leonardo吗?它会"生存"序列化/反序列化吗?
(感谢弗拉基米尔和李,这个问题现在更具体到我想知道的内容).
我想并行执行多个callables.但看起来ExecutorService总是等到所有的callables完成.
我尝试过以下方法:
final int nThreads = 10;
ExecutorService executorService = Executors.newFixedThreadPool(nThreads);
List<PrimeCallable> tasks = new ArrayList<PrimeCallable>();
for(int i = 0; i < nThreads; i++) {
tasks.add(new PrimeCallable(0, i * 100 + 100, "thread" + i));
}
try {
for(Future<List<Integer>> result : executorService.invokeAll(tasks)) {
List<Integer> integers = result.get();
for(Integer i : integers){
System.out.println(i);
}
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
现在,当完成executorService中的所有可调用对象时,将调用for循环.据我所知,没有executorService.isParallel setter ;-). …
我在一些陈旧的和坏的C代码中发现了以下内容:
#define addr (((((147 << 8) | 87) << 8) | 117) << 8) | 107
Run Code Online (Sandbox Code Playgroud)
它是什么?嗯,我知道它是一个IP地址 - 向左移8位也是有道理的.但任何人都可以向我解释这个问题吗?那里发生了什么?
谢谢!
嘿伙计们我开始玩ASP.NET MVC 5预览,到目前为止一切都很好(我只能推荐它).
但是,我想知道在哪里可以为Built-In [Authorize]-Attribute 设置Login-Url .我搬到了AccountController一个区域,因此该路径登录动作不再/Account/Login,但是MyArea/Account/Login,这是由忽略[Authorize]-Attribute,这反过来又意味着,每当一个导航设置,一个控制器或动作与属性被重定向到错误的路径/Account/Login.
好吧,我已经有很长一段时间没用过没有JQuery的JavaScript了......但是,随着编码的发展,我不得不为一个我无法确定提供JQuery的项目提供强大功能.
我正在尝试做的事情是使用JQuery:
$(document).ready(function() {
$('#myDiv').append('<ul><li>a</li><li>b</li></ul>');
});
Run Code Online (Sandbox Code Playgroud)
现在对于非jquery的事情,这就是我所拥有的,我真的无法理解为什么它不起作用:
<html>
<head>
<script type="text/javascript">
function load() {
var s = '<ul><li>a</li><li>b</li></ul>';
var element = document.getElementById("myDiv");
element.innerHtml += s;
}
</script>
</head>
<body onload="load()">
<div id="myDiv"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
事情是,没有任何事情发生(虽然函数被调用).可能是在调用load()时DOM没有准备好吗?我依稀记得这个代码在firefox 2.x IE7时代工作......
什么是(a)正确的解决方案?
我正在使用 pybind11 的不透明类型。例如,我为 stl 容器定义了一个std::vector<uint32_t>,它是方法的参数类型FromVec:
void FromVec(std::vector<uint32_t> vec);
PYBIND11_MAKE_OPAQUE(std::vector<uint32_t>);
PYBIND11_MODULE(tmap, m)
{
py::bind_vector<std::vector<uint32_t>>(m, "VectorUint",
"Unsigned 32-bit int vector.");
m.def("from_vec", &FromVec, py::arg("vec")
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我现在可以(在 Python 中)执行以下操作:
vec = VectorUint([2, 66, 262, 662, 26, 62])
from_vec(vec)
Run Code Online (Sandbox Code Playgroud)
但是,类型转换不再起作用,因为该函数现在需要 aVectorUint并且不再接受list,例如:
l = [2, 66, 262, 662, 26, 62]
from_vec(l)
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以同时允许倾斜类型和类型转换?也就是说,当list传递 a 而不是倾斜绑定时VectorUint,它会转换为 astd::vector<uint32_t>而不是 Python 抛出“不兼容的函数参数”?
我正在用C#和OleDB(12.0)读取一个excel文件.在那里,我必须使用我希望阅读的表单的名称指定select语句([Sheet1$]).
this.dataAdapter =
new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
Run Code Online (Sandbox Code Playgroud)
是否可以选择第一张纸,无论名称是什么?
谢谢.
我知道这可能与类加载器有关,但是我找不到一个例子(可能是我正在谷歌搜索错误的关键字.
我试图从字符串加载一个类(或方法).该字符串不包含类的名称,但包含类的代码,例如
class MyClass implements IMath {
public int add(int x, int y) {
return x + y;
}
}
Run Code Online (Sandbox Code Playgroud)
然后做这样的事情:
String s = "class MyClass implements IMath { public int add(int x, int y) { return x + y; }}";
IMath loadedClass = someThing.loadAndInitialize(string);
int result = loadedClass.add(5,6);
Run Code Online (Sandbox Code Playgroud)
现在显然,someThing.loadAndInitialize(string)- 部分是我不知道如何实现的部分.这甚至可能吗?或者更容易运行JavaScripts并以某种方式"给"变量/对象(如x和y)?
谢谢你的任何提示.
我的问题非常简单我有一个包含类型的(私有)对象的类ObservableCollection<T>,现在我想运行一些线程(按顺序,因此ThreadPool而不是BackgroundWorkers),它们将新项添加到ObservableCollection<T>.
如果是,ObservableCollection<T>那么说,a ProgressBar,一切都会很简单( - > Invoke),但我不知道如何调用该ObservableCollection<T>对象.
我的目标是拥有一个BackgroundWorker可以运行顺序的东西.
先感谢您.
c# ×3
java ×2
.net ×1
asp.net-mvc ×1
c ×1
c++ ×1
callable ×1
classloader ×1
dom ×1
excel ×1
func ×1
ipv4 ×1
javascript ×1
lambda ×1
oledb ×1
pybind11 ×1
python ×1
reflection ×1