我想知道如何获得lambda对字段的引用.我不想使用方法,因为我的字段是公共最终的.我怀疑这是不可能的,但我没有看到明显的陈述.
class A {
public final String id;
...
}
Map<String, A> f(List<A> l) {
return l.stream().collect(Collectors.toMap(A::id, Function.identity()));
}
Run Code Online (Sandbox Code Playgroud) 我有一个自定义编译任务.
task compileSpeedTest(type: JavaCompile) {
classpath = files('build')
source = fileTree('src/test/java/speed')
destinationDir = file('bin')
}
Run Code Online (Sandbox Code Playgroud)
Gradle在执行之前不会尝试下载依赖项.我找不到一个任务名称,它将它添加到列表dependsOn上.
我正在尝试使用Duration
该类而不是long
.它具有优越的文字语法.我喜欢它的灵活性,虽然它看起来很奇怪.
"PT10S"意味着10秒,接受"10秒"的问题是什么?!好的没关系.
我只是好奇为什么选择了PT前缀(不是"DU"例如)以及为什么任何前缀在这里更好而不是什么?
我加入了一个项目。代码库对我来说是新的。我对在代码库中使用的模块感兴趣,它是从依赖项导入的。该模块未在项目中定义。
是否有一种自动/简单的方法来确定哪个库提供了我感兴趣的模块?
许多依赖项是专有的,hoogle 无法帮助我解决这个问题。
每一篇关于异常的 Haskell 文章都重复简单的模式:使用括号函数来分配/释放资源,你会很安全。
我有一个问题,因为我测试了它的行为并检测到线程在发布部分工作时可能会出现异步异常。
import Control.Exception
import Control.Concurrent
main = do
tid <- forkIO myThread
threadDelay 100000
throwTo tid StackOverflow
threadDelay 1000000
myThread =
bracket
(putStrLn "NEW")
(\() -> threadDelay 500000 >> putStrLn "CLEAN")
(\() -> putStrLn "USE")
Run Code Online (Sandbox Code Playgroud)
在上面的代码段中,由于异步异常,“CLEAN”未打印 - 所以资源泄漏!怎样才能称得上安全?
我不知道一切,这一定是一个原因。为了确保安全,我需要将每次清洁都包裹在面罩内。它看起来很笨拙。
我有这样的结构
#[derive(Copy, Clone)]
enum Command {
Quit,
Error { msg: String },
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨它无法为其生成复制构造函数Error
.
我需要使struct可复制以将通道传递给另一个线程.
error: the trait `Copy` may not be implemented for this type; variant `Error` does not implement `Copy` [E0205]
#[derive(Copy, Clone)]
^~~~~~~~~~~~~~~~~~~~~~
note: in this expansion of #[derive_Copy] (defined in src/main.rs)
Run Code Online (Sandbox Code Playgroud)
它编译如果msg
是i32
.看起来很奇怪,这种基本类型String
是不可复制的.
我发现使用默认equals方法的类具有不同的元对象Method实例.为什么会这样?乍一看它看起来不是最佳的,因为方法对象是不可变的.
class X {}
Method defaultM = Object.class.getMethod("equals", Object.class)
Method xMethod = X.class.getMethod("equals", Object.class)
xMethod != defaultM
xMethod.equals(defaultM)
Run Code Online (Sandbox Code Playgroud) 我弄清楚了如何处理受单个类约束的异构类型列表:
\ndata Ex c = forall a. (c a) => Ex a\n\nforEx :: [Ex c] -> (forall a. c a => a -> b) -> [b] \nforEx [] _ = [] \nforEx (Ex a:r) f = f a : forEx r f\n\n> forEx @Show [Ex 3, Ex (), Ex True] show\n["3","()","True"]\n
Run Code Online (Sandbox Code Playgroud)\n看起来不错,但在现实生活中,与 show 函数相比,它会更复杂,依赖于 1 个以上的约束。\n进一步类推是行不通的:
\n尝试1:
\nforEx @(Show, Eq) [Ex 3, Ex (), Ex True] show\n\n<interactive>:85:8: error:\n \xe2\x80\xa2 Expected kind \xe2\x80\x98* -> Constraint\xe2\x80\x99, but \xe2\x80\x98(Show, …
Run Code Online (Sandbox Code Playgroud) 我按照教程http://gettingstartedwithchef.com/,第1章.
我的运行列表是
"run_list": [ "recipe[apt]", "recipe[phpap]" ]
Run Code Online (Sandbox Code Playgroud)
我的phpap cookbook的默认食谱
include_recipe "apache2"
include_recipe "build-essential"
include_recipe "openssl"
include_recipe "mysql::client"
include_recipe "mysql::server"
include_recipe "php"
include_recipe "php::module_mysql"
include_recipe "apache2::mod_php5"
include_recipe "mysql::ruby"
Run Code Online (Sandbox Code Playgroud)
我的食谱的依赖性
depends "apache2"
depends "mysql"
depends "php"
depends "database"
Run Code Online (Sandbox Code Playgroud)
我的回购已经下载了下载的食谱
apache2 aws database openssl phpap xml
apt build-essential mysql php postgresql xfs
Run Code Online (Sandbox Code Playgroud)
我用厨师独奏.我的主人已经过时了回购信息.旧的回购不应该是一个问题,因为我的运行列表中的第一个配方更新它.但是厨师忽略了apt配方并从mysql开始.
见日志
dan@mywp3:~/chef-repo$ sudo chef-solo -c solo.rb -j web.json
Starting Chef Client, version 11.6.2
Compiling Cookbooks...
[2013-10-27T00:59:28+04:00] WARN: Cloning resource attributes for service[apache2] from prior resource (CHEF-3694)
[2013-10-27T00:59:28+04:00] WARN: …
Run Code Online (Sandbox Code Playgroud) 我试图使这些代码更简洁,并摆脱冗余变量.有可能这样做吗?
trait Foo {}
impl Foo for i32 {}
impl Foo for String {}
fn main() {
let xi32: i32 = 10;
let y = String::from("ooo");
let mut foo_list: Vec<&Foo> = vec![];
foo_list.push(&xi32 as &Foo);
foo_list.push(&y as &Foo);
}
Run Code Online (Sandbox Code Playgroud)
以下变体不起作用:
foo_list.push(10 as Foo);
Run Code Online (Sandbox Code Playgroud)
error[E0620]: cast to unsized type: `{integer}` as `Foo`
--> src/main.rs:11:19
|
11 | foo_list.push(10 as Foo);
| ^^^^^^^^^
|
help: consider using a box or reference as appropriate
--> src/main.rs:11:19
|
11 | foo_list.push(10 as Foo);
| …
Run Code Online (Sandbox Code Playgroud) haskell ×3
java ×3
rust ×2
asynchronous ×1
cabal ×1
chef-infra ×1
concurrency ×1
cookbook ×1
duration ×1
exception ×1
gem ×1
gradle ×1
iso8601 ×1
java-8 ×1
java-time ×1
jvm ×1
lambda ×1
period ×1
reflection ×1
ruby ×1