我读了很多关于如何在Java 8中轻松定义lambda的例子.这个lambda总是有一个参数,如f1:
Function<Integer,Integer> f1 = (x) -> Math.pow(x,2);
Run Code Online (Sandbox Code Playgroud)
当然,你可以扩展身体像f2:
Function<Integer,Integer> f2 = (x) -> {if (x < 0) return 0;
else return Math.pow(x,2);};
Run Code Online (Sandbox Code Playgroud)
但我找不到一种方法来定义一个具有可变数量的参数的lambda,如f3:
Function<Integer,Integer,Integer> f3 = (x,y) -> {return x + y};
Run Code Online (Sandbox Code Playgroud)
或没有参数如f4:
Function<Double> f4 = () -> {return Math.random()};
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定,你可以定义自己的功能界面(即通常创建一个新的文件)制定f3和f4,但有一些方法可以简单地定义呢?
在intellij IDEA中,我在同一个项目中使用Java和ActionScript.Java SDK是项目的默认设置.当我想在ActionScript中编程时,几个类不可用(例如String).前一点是因为项目没有使用ActionScript SDK,我猜.那么我的问题是:是否可以在同一个IntelliJ IDEA项目中使用多种语言(在本例中为两种语言)?如果答案是"是",那我该怎么办?
提前致谢
我已经读过在ActionScript中只能包含一个类.如果您需要帮助程序类,则必须从程序包中编写此类.例:
package {
public class A {}
}
class B {}
Run Code Online (Sandbox Code Playgroud)
但是,我在adobe网站上找到了以下示例(:http: //help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f9e.html):
package flash.xml
{
class XMLDocument {}
class XMLNode {}
class XMLSocket {}
}
Run Code Online (Sandbox Code Playgroud)
在下面的网页(http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/packages.html)中,他们说你只能用文件写一个包的类:
// SampleCode.as file
package samples{
public class SampleCode {}
}
// CodeFormatter.as file
package samples {
class CodeFormatter {}
}
Run Code Online (Sandbox Code Playgroud)
然后我的结论是:你不能按文件写一个包的多个类,对吧?这种限制只是为了促进AS3的良好实践,对吧?
对不起,如果这个问题太简单了.
C指针(始终)是否从有效的地址存储器开始?例如,如果我有以下代码:
int *p;
*p = 5;
printf("%i",*p); //shows 5
Run Code Online (Sandbox Code Playgroud)
为什么这段代码起作用?根据我读过的书,他们说一个指针始终需要一个有效的地址存储器,并给出以下类似的示例:
int *p;
int v = 5;
p = &v;
printf("%i",*p); //shows 5
Run Code Online (Sandbox Code Playgroud) 我理解指针概念 ( int*),但我无法理解,int&因为它们给出了相同的结果。究竟是int &data什么意思?
void add1(int *data){
(*data)++;
}
void add2(int &data){
data++;
}
int main()
{
int i=0;
add1(&i);
printf ("value i = %d\n",i) // show 1
add2(i);
printf ("value i = %d\n",i); // show 2
return 0;
}
Run Code Online (Sandbox Code Playgroud) 这个问题是相同的:[ 如何在Java中从另一个调用一个构造函数?,但使用JavaScript。
我读到JavaScript在一个类中不支持构造函数的多个声明,这是真的吗?
那么,我可以实现以下代码吗?
class A {
constructor(a,b){
console.log([a,b]);
}
constructor(obj) {
console.log(obj.a,obj.b);
}
}
let x1 = new A(2,4);
let x2 = new A({a:2,b:4});
Run Code Online (Sandbox Code Playgroud)
回到最初的问题:
class A {
constructor(a,b){
console.log(a+b);
}
constructor(obj) {
this(obj.a,obj.b);
}
}
let x1 = new A(2,4);
let x2 = new A({a:2,b:4});
Run Code Online (Sandbox Code Playgroud)
如果没有,那么最“透明”的设计模式是什么?
class ×2
java ×2
pointers ×2
actionscript ×1
c ×1
c++ ×1
constructor ×1
java-8 ×1
javascript ×1
lambda ×1
memory ×1
packages ×1
reference ×1
sdk ×1