疯了, 完全疯了, 这语法好怪异, 呵呵。
融合了 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 []
操作符:
字符串:
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!
融合了 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!