疯了, 完全疯了, 这语法好怪异, 呵呵。
融合了 N 多语言特色的样子, 这是要干什么啊? SUN!
在网上找了好多资料,
学习中, 更新中, 备忘录……唉!
JavaFX 数据类型:
String --> java.lang.String
Boolean --> java.lang.Boolean
Number --> java.lang.Number
Integer --> byte、short、int、long、java.math.BigInteger
用 var 声明变量:
var x:Number = 0.9;
var name:String = "John";
var y:Integer = 0;
var flag:Boolean = true;
var numbers:Number = [1, 2, 3, 4, 5];
逻辑运算符:
Java JavaFX
&& and
|| or
! not
函数:
function taxes(x) {
var t:Number = (19.0 / 100.0) * x;
return t;
}
if 语句:
if (place_your_condition_here) {
//do something
} else if (place_your_condition_here) {
//do something
} else {
//do something
}
while 语句:
while (place_your_condition_here) {
//do something
}
for 语句:
//i will take the values: 0, 1, 2, 3, 4, 5
for (i in [0..5]) {
//do something with i
}
操作过程:
operation startClock() {
do {
//do something
}
类:
class Order {
attribute order_nr: String;
attribute ordertype: Order inverse Order.products;
attribute products: Order* inverse Order.ordertype;
function getOrderNr(): String;
operation addOrder(order: Order);
}
变量基数:
?:可选(可能是null)
+:1或多个
*:0或多个
数组大小:
sizeof array
符合条件子数组:
var mynumbers = [1,2,7,3,30,15,14,6,4];
var numbers = mynumbers[n|n < 10];
结果:1 2 7 3 6 4
数组中第 N 个元素:
var mynumbers = [1,2,7,3,30,15,14,6,4];
var number_four = mynumbers[4];
结果:30
向数组中插入:
insert 10 into mynumbers; 默认在最后一个位置插入 last
insert [8,6,90] as first into mynumbers; 首
insert 122 as last into mynumbers; 尾
insert 78 before mynumbers[3]; 指定位置前
insert 11 after mynumbers[3]; 指定位置后
从一个区间获得偶数的例子:
function odd(p:Number) {
return select i from i in [1.0 ..p] where (i%2 == 0.0);
}
var result = odd(10.0);
System.out.println("Odd numbers:{result}");
function odd(p:Number) {
return foreach (i in [1.0 ..p] where (i%2 == 0.0)) i;
}
var result = odd(10.0);
System.out.println("Odd numbers:{result}");
调用 Java 对象:
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.lang.System;
var frame = new JFrame();
var button = new JButton("Press me");
frame.getContentPane().add(button);
button.addActionListener(new ActionListener() {
operation actionPerformed(event) {
System.out.println("You pressed me");
}
});
frame.pack();
frame.setVisible(true);
以上代码等价于:
Frame {
content: Button {
text: "Press Me"
action: operation() {
System.out.println("You pressed me");
}
}
visible: true
}
数组另类用法:
var week_days = ["Mon","Tue","Wed","Thur","Fri"];
var days = [week_days, ["Sat","Sun"]];
days == ["Mon","Tue","Wed","Thur","Fri","Sat","Sun"]; // returns true
var nums = [1,2,3,4];
var numsGreaterThanTwo = nums[. > 2]; // yields [3, 4]
等价于:
numsGreaterThanTwo = nums[n|n > 2];
[] == null // yields true
sizeof null // yields 0
数组操作:
insert Expression1 [as first | as last] into Expression2
insert Expression1 before Expression2
insert Expression1 after Expression2
delete variable
delete Expression.attribute
delete variable[predicate]
delete Expression.attribute[predicate]
var x = [1,2,3];
insert 12 into x; // yields [1,2,3,12]
insert 10 as first into x; // yields [10,1,2,3,12]
var x = [1,2,3];
insert 10 after x[. == 10]; // yields [1,2,3,10]
insert 12 before x[1]; // yields [1,12,2,3,10]
insert 13 after x[. == 2]; // yields [1, 12, 2, 13, 3, 10];
insert [99,100] as last into x; // yields [10,1,2,3,12,99,100]
var x = [1,2,3];
insert 10 into x; // yields [1,2,3,10]
insert 12 before x[1]; // yields [1,12,2,3,10]
delete x[. == 12]; // yields [1,2,3,10]
delete x[. >= 3]; // yields [1,2]
insert 5 after x[. == 1]; // yields [1,5,2];
insert 13 as first into x; // yields [13, 1, 5, 2];
delete x; // yields []
操作符:
Operator Meaning Java Equivalent
Relational Operators |
== |
equality |
== |
<> |
inequality |
!= |
< |
less than |
< |
> |
greater than |
> |
<= |
less than or equal |
<= |
>= |
greater than or equal |
>= |
Boolean Operators |
|
and |
logical and |
&& |
or |
logical or |
|| |
not |
logical negation |
! |
Arithmetic Operators |
+ |
addition |
+ |
- |
subtraction; unary negation |
- |
* |
multiplication |
* |
/ |
division |
/ |
% |
remainder |
% |
+= |
add and assign |
+= |
-= |
subtract and assign |
-= |
*= |
multiply and assign |
*= |
/= |
divide and assign |
/= |
%= |
remainder and assign |
%= |
Other Operators |
sizeof |
array length |
n/a |
indexof |
ordinal position |
n/a |
if e1 then e2 else e3 |
conditional expression |
e1 ? e2 : e3 |
select |
list comprehension |
n/a |
foreach |
list comprehension |
n/a |
new |
allocation |
new |
op() |
function/operation call |
n/a |
x.op() |
member function/operation call |
x.op() |
instanceof |
type check |
instanceof |
this |
self access |
this |
. |
attribute access, context access |
., n/a |
bind [lazy] |
incremental [lazy] evaluation |
n/a |
: |
eager initialization |
n/a |
[] |
array selection |
[] |
format as |
String formatting |
n/a |
<<>> |
Identifier quotes |
n/a |
{} |
String expression |
n/a |
(expr) |
grouping |
(expr) |
reverse |
reverses a list |
n/a |
[number1,next..number2]<!----> |
numeric range |
n/a |
字符串:
var s = 'Hello';
var s = "Hello";
var name = 'Joe';
var s = "Hello {name}"; // s = 'Hello Joe'
var answer = true;
var s = "The answer is {if answer then "Yes" else "No"}"; // s = 'The answer is Yes'
<<关键字>>
var <<while>> = 100;
import javax.swing.JTextArea;
var textArea = new JTextArea();
textArea.<<insert>>("Hello", 0);
范围表达式:
[
number1..
number2]
var nums = [0..3];
System.out.println(nums == [0,1,2,3]); // prints true
var nums = [3..0];
System.out.println(nums == [3,2,1,0]); // prints true
格式化字符串, 数字, 日期:
</insert></while>
expr format as
directive
import java.util.Date;
100.896 format as <<%f>>; // yields '100.896000'
31.intValue() format as <<%02X>>; // yields '1F'
var d = new Date();
d format as <
if (condition1) {
System.out.println("Condition 1");
} else if (condition2) {
System.out.println("Condition2");
} else {
System.out.println("not Condition 1 or Condition 2");
}
while 语句:
var i = 0;
while (i < 10) {
if (i > 5) {
break;
}
System.out.println("i = {i}");
i += 1;
}
try 语句:
try {
throw "Hello";
} catch (s:String) {
System.out.println("caught a String: {s}");
} catch (any) {
System.out.println("caught something not a String: {any}");
} finally {
System.out.println("finally...");
}
for 语句:
for (i in [0..10]) {
System.out.println("i = {i}");
}
// print only the even numbers using a filter
for (i in [0..10] where i % 2 == 0) {
System.out.println("i = {i}");
}
// print only the odd numbers using a range expression
for (i in [1,3..10]) {
System.out.println("i = {i}");
}
// print the cartesian product
for (i in [0..10], j in [0..10]) {
System.out.println(i);
System.out.println(j);
}
throw 语句:
import java.lang.Exception;
operation foo() {
throw new Exception("this is a java exception");
}
operation bar() {
throw "just a string";
}
do 语句:
允许在后台执行一个代码块。
import java.net.URL;
import java.lang.StringBuffer;
import java.lang.System;
import java.io.InputStreamReader;
import java.io.BufferedReader;
// in the AWT EDT
var result = new StringBuffer();
do {
// now in a background thread
var url = new URL("http://www.foo.com/abc.xml");
var is = url.openStream();
var reader = new BufferedReader(new InputStreamReader(is));
var line;
while (true) {
line = reader.readLine();
if (line == null) {
break;
}
result.append(line);
result.append("\n");
}
}
// now back in the EDT
System.out.println("result = {result}");
do later:
import java.lang.System;
var saying1 = "Hello World!";
var saying2 = "Goodbye Cruel World!";
do later {
System.out.println(saying1);
}
System.out.println(saying2);
返回:
Goodbye Cruel World!
Hello World!