[Feat] 可变参数 variadic! 目前函数若使用可变参数,参数只能为1个
语法 func (arg...) 获取到的类型为 List
若要判断类型,使用标准库 std.value.type
[Feat] 标准库 std.io std.value 实现,提供print,read等函数
详见 Library/std 实现
[Impl] 分离 builtin value 和 function注册
This commit is contained in:
@@ -3,7 +3,48 @@ Official Module `std.io`
|
||||
Library/std/io/io.fig
|
||||
*/
|
||||
|
||||
public func print(value) -> Null
|
||||
import _builtins;
|
||||
import noSpace; // sub module `no space print`
|
||||
|
||||
// outputs
|
||||
|
||||
public func print(objects...) -> Int
|
||||
{
|
||||
__fstdout_print(value);
|
||||
}
|
||||
var length := objects.length();
|
||||
for var i:=0; i < length; i += 1
|
||||
{
|
||||
if i > 0
|
||||
{
|
||||
__fstdout_print(" ");
|
||||
}
|
||||
__fstdout_print(objects[i]);
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
public func println(objects...) -> Int
|
||||
{
|
||||
var length := objects.length();
|
||||
for var i:=0; i < length; i += 1
|
||||
{
|
||||
if i > 0
|
||||
{
|
||||
__fstdout_print(" ");
|
||||
}
|
||||
__fstdout_print(objects[i]);
|
||||
}
|
||||
__fstdout_print("\n");
|
||||
return length + 1;
|
||||
}
|
||||
|
||||
// inputs
|
||||
|
||||
public func read() -> String
|
||||
{
|
||||
return __fstdin_read();
|
||||
}
|
||||
|
||||
public func readln() -> String
|
||||
{
|
||||
return __fstdin_readln();
|
||||
}
|
||||
|
||||
27
src/Module/Library/std/io/noSpace.fig
Normal file
27
src/Module/Library/std/io/noSpace.fig
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
Official Module `std.io`
|
||||
Library/std/io/noSpaces.fig
|
||||
*/
|
||||
|
||||
import _builtins;
|
||||
|
||||
public func print(objects...) -> Int
|
||||
{
|
||||
var length := objects.length();
|
||||
for var i:=0; i < length; i += 1
|
||||
{
|
||||
__fstdout_print(objects[i]);
|
||||
}
|
||||
return length;
|
||||
}
|
||||
|
||||
public func println(objects...) -> Int
|
||||
{
|
||||
var length := objects.length();
|
||||
for var i:=0; i < length; i += 1
|
||||
{
|
||||
__fstdout_print(objects[i]);
|
||||
}
|
||||
__fstdout_print("\n");
|
||||
return length + 1;
|
||||
}
|
||||
@@ -3,4 +3,5 @@ Official Module `std`
|
||||
Library/std/std.fig
|
||||
*/
|
||||
|
||||
import io; // link std io
|
||||
import io; // link std.io
|
||||
import value; // link std.type
|
||||
53
src/Module/Library/std/value/value.fig
Normal file
53
src/Module/Library/std/value/value.fig
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
Official Module `std.value`
|
||||
Library/std/value/value.fig
|
||||
*/
|
||||
|
||||
import _builtins;
|
||||
|
||||
public func type(object: Any) -> String
|
||||
{
|
||||
return __fvalue_type(object);
|
||||
}
|
||||
|
||||
public func int_parse(number: String) -> Int
|
||||
{
|
||||
return __fvalue_int_parse(number);
|
||||
}
|
||||
|
||||
public func int_from(number: Any) -> Any
|
||||
{
|
||||
var ntype := type(number);
|
||||
if ntype == "Double" or ntype == "Bool"
|
||||
{
|
||||
return __fvalue_int_from(number);
|
||||
}
|
||||
if ntype == "Int"
|
||||
{
|
||||
return number;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public func double_parse(number: String) -> Double
|
||||
{
|
||||
return __fvalue_double_parse(number);
|
||||
}
|
||||
|
||||
public func double_from(number: Any) -> Any
|
||||
{
|
||||
if ntype == "Int" or ntype == "Bool"
|
||||
{
|
||||
return __fvalue_double_from(number);
|
||||
}
|
||||
if ntype == "Double"
|
||||
{
|
||||
return number;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public func string_from(obj: Any) -> String
|
||||
{
|
||||
return __fvalue_string_from(obj);
|
||||
}
|
||||
Reference in New Issue
Block a user