我想Future通过使用较少的lambda 来使我的用法更具建设性.目前我正在使用map和lambdas来访问期货的结果.例如:
val rateQuote = future {
connection.getCurrentValue(USD)
}
val purchase = rateQuote map { quote =>
if (isProfitable(quote)) connection.buy(amount, quote)
else throw new Exception("not profitable")
}
purchase onSuccess {
case _ => println("Purchased " + amount + " USD")
}
Run Code Online (Sandbox Code Playgroud)
map我不想为每个提供lambda(匿名函数),而是提供一个命名函数/方法.我该怎么办?例如:
val rateQuote = future {
connection.getCurrentValue(USD)
}
def namedFunction(arg: Arg) =
if (isProfitable(quote)) connection.buy(amount, quote)
else throw new Exception("not profitable")
val purchase = rateQuote map { quote => namedFunction }
Run Code Online (Sandbox Code Playgroud)
甚至更好
val purchase = rateQuote …Run Code Online (Sandbox Code Playgroud) 有人能解释我出去,如果下面的代码片段代表匿名函数或不?
var alpha = (function(){
/*
private space
*/
return{
//Some Code Here ...
}
})();
Run Code Online (Sandbox Code Playgroud)
这是匿名函数吗?这对我来说看起来像是匿名函数的结构,但我读到匿名函数是一个没有名字的函数。在这里,我认为 alpha(variable) 是分配给函数的名称,因此与概念相矛盾。
我知道它是否会是:
(function(){
return{
//Some Code Here ...
}
})();
Run Code Online (Sandbox Code Playgroud)
那么这将是Anonymous Function (self invoking) 或IIFE。
此外,以下是一个简单的函数,但不是匿名函数,因为 beta 被分配给该函数(如我上面的示例)。所以,如果这不是匿名函数(因为 beta 指向函数并代表它),那么我之前的函数(alpha 指向函数)怎么可能是匿名的?此外,自调用是额外的部分。我相信,仅仅因为一个函数是自调用的并不能使它成为匿名的。
var beta = function(){
//Some code
}
Run Code Online (Sandbox Code Playgroud)
有人可以澄清我吗?
为什么 Java 允许这样做,
class Test {
boolean a;
public void test() {
...
object.method(e -> a = true);
}
}
Run Code Online (Sandbox Code Playgroud)
但不是这个,
class Test {
public void test() {
boolean a;
...
object.method(e -> a = true);
}
}
Run Code Online (Sandbox Code Playgroud)
对于第二个示例,它抛出:
local variables referenced from a lambda expression must be final or effectively final
第二个例子的唯一区别是变量是在方法内部而不是类本身声明的。我是 Java 编程的初学者,我是否遗漏了一些明显的东西?
我目前正在学习 Scala 并且正在使用带有_通配符的匿名函数。这对我来说是有道理的:
// Creates function operation(a, b, c) => a + (b / c)
var operation = (_:Double) + (_:Double) / (_:Double)
Run Code Online (Sandbox Code Playgroud)
我不明白的是如何operation改为 return (a + b) / c。这些都不起作用:
// Attempting to create function operation(a, b, c) => (a + b) / c
var operation = ((_:Double) + (_:Double)) / (_:Double)
// error: value / is not a member of (Double, Double) => Double
var operation = ((_:Double) + (_:Double)).toDouble / (_:Double)
// error: …Run Code Online (Sandbox Code Playgroud) 当我尝试运行此代码时
DECLARE
TYPE type_a IS
TABLE OF NUMBER INDEX BY PLS_INTEGER;
output NUMBER := 1;
FUNCTION fun_2 RETURN type_a IS
dum type_a;
BEGIN
SELECT
employee_id
BULK COLLECT
INTO dum
FROM
employees;
RETURN dum;
END fun_2;
PROCEDURE proc_1 AS
BEGIN
NULL;
END;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误报告 - ORA-06550:第 22 行,第 8 列:PLS-00103:在预期以下情况之一时遇到符号“文件结束”:
begin function pragma procedure 06550. 00000 - "line %s, column %s:\n%s" *原因:通常是 PL/SQL 编译错误。*行动:
但是当我最后添加 BEGIN END 时它工作正常
DECLARE
TYPE type_a IS
TABLE OF NUMBER INDEX BY PLS_INTEGER;
output NUMBER := …Run Code Online (Sandbox Code Playgroud) 我试图简单地从jQuery $ .get()调用获得响应,并将其存储到变量中.事实证明这比我想象的要困难得多.这是我的代码:
var response;
$.get(("action.php?action=addFolder&folderName=" + input),
function(data, status){
response = data
}
);
return response;
Run Code Online (Sandbox Code Playgroud)
但响应总是未定义或为空.我怎样才能解决这个问题?
这是一个带有匿名回调的简单的AJAX请求.双方complete并error已触发.为什么?
$.ajax({
url:'/echo/js/?js=hello%20world!',
complete: function (response) {
console.log("In anonymous success callback");
console.log("response text: " + response.responseText);
console.log("response object:");
console.log(response);
},
error: function (error) {
console.log("In anonymous error callback");
console.log("error object:");
console.log(error);
}
});
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/abalter/tz0tu04y/
编辑 我尝试使用promises,现在我只是得到错误.我的"简单的"ajax肯定有问题.
$.ajax({
url: '/echo/js/?js=hello%20world!',
type: 'POST',
})
.done(function(response) {
console.log("In anonymous JS success callback");
console.log("response text: " + response.responseText);
console.log("response object:");
console.log(response);
})
.fail(function(error) {
console.log("In anonymous JS error callback");
console.log("error object:");
console.log(error);
})
.always(function(data) {
console.log("JS I will always do …Run Code Online (Sandbox Code Playgroud)