//函数扩展
import util;

io.open() 

//util.bind可用于修改函数的默认实参,并生成新的函数
string.findMail = util.bind( string.match, ,"\w+[\w\-\.]+\w@\w+[\w\-]*\w\.[\w\-\.]*\w{2,}" )
string.endWith = util.bind( string.endWith, , ,true)

io.print( 
	string.findMail("aaaaaaaaaa web@aau.cn "),
	string.endWith( "a abc","ABC" )
)
 
//===================================================

("")@ = {
	_get = function(k){
		return util.bind(string[k],owner);
	} 
}

str  = "12345"

io.open()
io.print( str.left(2) );

//===================================================
 
func = function(){
	io.print("a") 
}
proc = function(){
	io.print("b") 
}
 
//在调用一个函数时触发钩子函数,钩子函数返回任意非空值可中止目标函数执行
func = util.connect(func,proc); 
func()

//===================================================

tab = {
	name = "名字";
	func = function(){
		io.print( owner[["name"]] )
	} 
}

var func = tab.func;
func() //调用失败

var func = util.hitch(tab,"func");
func() //owner对象不再受前缀影响