基于AScript的python3脚本语言发布啦!

发布时间:2026/6/26 9:47:53
基于AScript的python3脚本语言发布啦! 安装1 install-package AScript 2 install-package AScript.Lang.Python3三、使用说明1、注册语言1 Script.Langs.Set(python3, Python3Lang.Instance); 2 // 可全局设置为默认语言 3 // Script.Langs.Set(python3, Python3Lang.Instance, setDefault: true);2、上下文中指定语言如果已全局设置默认语言则无需指定。1 var script new Script(); 2 script.Context.Langs new [] { python3 }; 3 var s 4 def sum(a,b): 5 return ab 6 sum(10,20) 7 ; 8 Assert.AreEqual(30L, script.Eval(s));3、使用lang指定语言1 var s 2 // 默认csharp语言 3 int mult(int a, int b) a*b; 4 // 嵌入python3语言 5 lang python3 6 def sum(a,b): 7 return ab 8 end 9 int m 10; 10 int n 20; 11 mult(m, n) sum(m, n); 12 ; 13 var script new Script(); 14 Assert.AreEqual(230, script.Eval(s));4、字符串插值1 string s 2 nametom; 3 fhello {name}, 58{58} 4 ; 5 var script new Script(); 6 script.Context.Langs new [] { python3 }; 7 Assert.AreEqual(hello tom, 5813, script.Eval(s));5、字符串索引和截取1 var script new Script(); 2 script.Context.Langs new [] { python3 }; 3 Assert.AreEqual(e, script.Eval(hello[1])); 4 Assert.AreEqual(e, script.Eval(hello[-4])); 5 Assert.AreEqual(ell, script.Eval(hello[1:4])); 6 Assert.AreEqual(ell, script.Eval(hello[-4:-1]));6、列表1 var s 2 list1 [1,2,3] 3 list2 [3,4,5] 4 list3list1 list2 5 ; 6 var script new Script(); 7 script.Context.Langs new[] { python3 }; 8 var result script.EvalListobject(s); 9 Assert.AreEqual(1,2,3,3,4,5, string.Join(,, result)); 10 Assert.AreEqual(2L, script.Eval(list3[1])); 11 Assert.AreEqual(2L, script.Eval(list3[-5]));7、集合集合元素是去重的。1 var script new Script(); 2 script.Context.Langs new[] { python3 }; 3 var set (HashSetobject)script.Eval( 4 s {1, 2, 2} 5 s.add(3) 6 s.add(2) 7 s 8 ); 9 Assert.AreEqual(1,2,3, string.Join(,, set));8、字典1 var s 2 p {name: 张三, age: 18} 3 p[age]20 4 p 5 ; 6 var script new Script(); 7 script.Context.Langs new [] { python3 }; 8 var dict script.EvalDictionaryobject, object(s); 9 Assert.AreEqual(2, dict.Count); 10 Assert.AreEqual(张三, dict[name]); 11 Assert.AreEqual(20L, dict[age]);9、for遍历值1 var code 2 total 0 3 for x in [1, 2, 3]: 4 total x 5 total 6 ; 7 var script new Script(); 8 script.Context.Langs new[] { python3 }; 9 Assert.AreEqual(6L, script.Eval(code));10、for遍历值和索引1 var code 2 result 3 for i, x in enumerate([1, 2, 3]): 4 result f{i}:{x}, 5 result 6 ; 7 var script new Script(); 8 script.Context.Langs new[] { python3 }; 9 Assert.AreEqual(0:1,1:2,2:3,, script.Eval(code));11、列表推导式1 var code [x * 2 for x in [1, 2, 3]]; 2 var script new Script(); 3 script.Context.Langs new[] { python3 }; 4 var list (Listobject)script.Eval(code); 5 Assert.AreEqual(3, list.Count); 6 Assert.AreEqual(2L, list[0]); 7 Assert.AreEqual(4L, list[1]); 8 Assert.AreEqual(6L, list[2]);