kotlin函数还有,let和run,以及类似sh(和mathematica)的管道语法
PyTlin的Python项目详细描述
安装
pipinstallPyTlin
语法
fromPyTlinimportkk(obj).let(func).also(func)k.run(func)k(obj)|func1|func2|...k(obj)@func1@func2@...
这里所有表达式(除了k.run(func))都包装在类中 k要恢复obj,可以应用以下任一方法
k(obj).endk(obj)|'end'k(obj)|0k(obj)@'end'k(obj)@0
示例
fromPyTlinimportkclassPerson:def__init__(self,name,age):self.name=nameself.age=agedef__repr__(self):return'%s, %d'%(self.name,self.age)defincreaseAge(self):self.age=self.age+1defnameToUpperCase(self):self.name=self.name.upper()student=Person('Pete',18)print(student)#Pete, 18
设
name=k(student).let(lambdax:(print(x),x.name)[1])#Pete, 18print(name)#Pete
也
newstudent=k(student).also(lambdax:(x.increaseAge(),x.nameToUpperCase()))print(newstudent)#PETE, 19
运行
mood='sad'k.run(lambdamood='happy':print(mood))#happyprint(mood)#sad
管道
管道可以使用.let或管道运算符@ (与Mathematica相似,顺序相反)或|(与sh相似)
ops=k(4).let(lambdax:x*2).let(lambdax:x+3)print(ops)#11print(type(ops))#<class 'PyTlin.k'>print(ops.end)#11print(type(ops.end))#<class 'int'>print(ops.end==k(4)@(lambdax:x*2)@(lambdax:x+3)@'end')#Trueprint(ops.end==k(4)|(lambdax:x*2)|(lambdax:x+3)|0)#True