@飞扬工作室 好好的火山被你折腾成什么样了。
本帖最后由 server 于 2025-8-21 20:32 编辑PC实现变量引用指针替代读指针处对象 - 火山平台俱乐部 - 递归火山软件开发平台 - Powered by Discuz!
<火山程序 类型 = "通常" 版本 = 1 />
方法 置引用变量指针 <公开 静态 @嵌入式方法 = "">
参数 变量 <@匹配类型 = 通用型>
参数 指针 <类型 = 变整数>
{
@ @pdt<变量>& @<变量>=*(@pdt<变量>*)@<指针>;
}
这个顶级的优点为了让C++迎合Java 阉割了。
不心疼吗?
------------------------------------------------------------------------------------------
同志们,不管你们信不信,实时上火山难度在C++之上(封库人员)。
即你是个全能的C++程序员之外,任然要学习各种火山的附加属性。
这就是给火山套枷锁。属性越多,枷锁越重。
适时的取消一些限制,减少一些属性。
逐步让火山回归本职工作,老老实实当翻译。
只有封过库的人才知道@嵌入式方法 到底有多香。
同志们,不管你信不信
整数类等基础数据类,全是受到JAVA传染的衍生。
这不合理。 ;P;P;P也不是一天两天了 下面是某**编程语言处理C#源码时的例子,对比现在火山,他的方法确实方便很多。
//运行时编译C#
import console;
console.open()
import dotNet;
//创建应用程序域(无参数创建唯一实例,不必手动释放)
var appDomain = dotNet.appDomain();
//创建C#语言编译器
var compiler = appDomain.createCompiler("C#");
compiler.Reference("System.dll")
//设置待编译C#源码
compiler.Source = /******
using System;
using System.Reflection;
using System.Collections;
namespace CSharpLibrary
{
public class AardioTable
{
private object tObject;
public AardioTable(object obj){
tObject = obj;
}
public object GetProperty(string k){
returntObject.GetType().InvokeMember(k, BindingFlags.GetProperty, null, tObject, null);
}
public void SetProperty(string k,object v){
tObject.GetType().InvokeMember(k, BindingFlags.SetProperty, null, tObject, new object[] { v });
}
public object InvokeMember(string k,params/*不定个数参数*/ object[] arg ){
returntObject.GetType().InvokeMember(k, BindingFlags.InvokeMethod, null, tObject, arg );
}
}
public class CSharpObject
{
public object Hello( object comObject ){
AardioTable tab = new AardioTable( comObject );
tab.SetProperty( "属性名",456 ) ;
tab.InvokeMember( "执行aardio"," console.log('在C#中执行aardio代码') " );
IEnumerator enumerator = (comObject as IEnumerable).GetEnumerator();
while (enumerator.MoveNext())
{
Console.WriteLine( "C#中遍历aardio对象键名:" + enumerator.Current );
}
return tab.GetProperty("属性名");
}
public int [] Test(double a, int [] b){
b = b + (int)a;
return b;
}
}
}
******/
//编译并返回程序集
var assembly = compiler.Compile()
console.log(compiler.getLastError())
//调用程序集创建类对象
var cSharpObject = assembly.new("CSharpLibrary.CSharpObject")
//调用实时编译的C#函数
var ret = cSharpObject.Hello( {
属性名 = 123;
执行aardio = function( code ){
loadcode(code)();
}
} ); 分开弄呗,安卓的JAVA,PC的C++
页:
[1]