long语言数据类型分为两类,基本数据类型(primitive)和引用类型(reference)
- 无符号整数(unsigned integer)
uint8 uint16 uint32 uint64 uint
- 有符号整数(signed integer)
int8 int16 int32 int64 int
- 浮点数
float double
- 字符(char)
char unsigned char signed char
- 布尔(boolean)
bool
- 字符串(string)
string
- nil
object, array, tuple 和 function
var i = 1 // int 类型自动推导
var i : uint8 = 0 // uint8 指定数据类型
const j = 2
j = 1 // error
var isOpen = true // boolean
var lang = "long" // string
var arr = [0, 1, 2, 3] // array
var tuple = [0, "string"] // tuple
var sum = function (a, b) { // function
return a + b
}
var a = 10, b = 10
var c = sum(a, b) // function call
var obj = {
name : "Lily"
age : 19
}
+ - * \ %
|| && ! == != <= >=
| & ^ << >>
= += -= *= /=
var i, j = 0, 1 // tuple assign
i, j = j, i
a?b:c
var str1 = "hello "
var str2 = "world"
var str = str1 + str2
var str3 = "hello " + 3 // error
var str4 = "hello " .. 3 // "hello 3"
long语言语句以line break结尾
var i = 0
var j = 2
for true {
// 无限循环
}
for var i=0; i<10; i++ {
print(i) //
}
var objs = ["a", "b", "c"]
for var o in objs {
print o //
}
for var i in [0-10] {
print i
}
{
} for true //
var i = true
if i {
print true
} else {
print false
}
var input = "hello"
switch input {
case "hello":
break;
default:
break;
}
function abc() {
retrun [1, "string"]
}
var i, str = abc()
var range = function() {
for var i=0; i<10; i++ {
yield i
}
}
for var i in range() {
print i // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
}
var a = { a : 1 }
var b = { b : 2 }
b.prototype = a
print b.a // 1
file: math.long
var _m = {
sum : function(a, b) {
return a + b
}
}
return _m
file: main.long
var math = require 'math'
var sum = math.sum(1, 2)
print sum
- Object
var a = { a : 1 }
var b = Object.create(a)
print b.a // 1
- String
var str = "hello world"
var arr = String.split(str, " ") // ["hello", "world"]
- Array
var arr = [1, 2, 3]
Array.join(arr, "~") // "1~2~3"
- Gereric
var _ = require 'gereric'
var arr = [1, 2, 3]
_.map(arr, function(e) {
print e + 1 // 2, 3, 4
})