作者hateexam ()
看板AndroidDev
标题[问题] 如何做到给一个string转成变数或涵式名称
时间Tue Apr 26 22:36:49 2011
譬如从一个字串内容譬如叫做 "name"
如何将字串"name"转成其实是一个变数名称(string name="xxx")
感谢~
--
1F:推 EmptySmile:存阵列吧...我想... 04/26 21:48
2F:→ EmptySmile:然後自己建个table去对应吧~ 04/26 21:49
4F:→ hateexam:恩 由於我们无法知道一份JAVA档 有哪些变数 04/26 21:54
5F:→ hateexam:所以无法建dictionary 但用reflection办的到吗 04/26 21:57
6F:推 nowar100:应该要自己写一个Compiler 去把这东西Reflect出来 04/26 22:38
7F:→ nowar100:例如看到有一个字串叫做"name" 它就会在另一个档案生成 04/26 22:39
8F:→ nowar100:出相对应的变数 这客制化一个小Compiler就可以做出来了 04/26 22:39
9F:→ nowar100:此属於语言问题 04/26 22:40
10F:→ nowar100:如果是要在同一份Source可以直接写出来这样 不行 04/26 22:40
11F:→ hateexam:恩 可是其实在JAVA档已经定义一个name的变数了 04/26 22:41
12F:→ nowar100:一定要对你原本的Source做一次Parse才知道到底有哪些东西 04/26 22:41
13F:→ hateexam:恩 所以没现成的android api可以用就是了><" 04/26 22:43
14F:→ hateexam:看来蛮麻烦的 parse後还要建table... 04/26 22:44
15F:→ nowar100:嗯我不太懂 在Java已经定义一个name的变数的意思 04/26 22:46
其实故事是这样 某份CPP档会去call android层
xxx.cpp---
call_anroid("name2");
某段cpp 涵式去mapping到android code的一个涵式
[c++]void call_anroid(string) <--->[java] void Call_Android(string)
xxx.java---
int name1=1 , name2=2, name3 =3;
void Call_Anroid(string s)
{
//这里想把s转成某个整数变数的名称;
//可以变成func(name2);
}
void func(int value)
{
}_
16F:→ nowar100:我觉得要往DesignPattern的方向想办法 Reflection不是 04/26 22:47
17F:→ nowar100:语言Coding可以作到的 那是要Compiler来做的 04/26 22:47
18F:→ nowar100:或者 就真的像一楼的作法 不要把name当成变数用 04/26 22:49
19F:→ nowar100:而是当成"内容" 根据这个内容再去做什麽事这样 04/26 22:49
20F:推 ericinttu:问原PO: 类似C的function pointer? 04/26 22:50
21F:→ hateexam:不是 C可以用define把字串变参数名称 但java没define功能 04/26 23:06
22F:→ hateexam:所以想有什麽方法 可以容易达到><" 04/26 23:06
23F:→ nowar100:C的define也要Compile可以作到阿 你现在不是depend on 04/26 23:07
24F:→ nowar100:传进的参数吗 这就要run time才行阿 怎麽define 04/26 23:08
25F:→ nowar100:我觉得你这情况 建个Map就好啦 04/26 23:09
26F:→ nowar100:name名称字串当key 数字当value 去查询Map就好了吧 04/26 23:10
27F:→ hateexam:define可以用#define funx(value) fun(#value) 04/26 23:12
28F:→ hateexam:把字串代换为变数 04/26 23:12
29F:推 ericinttu:原PO是不是觉得建table麻烦了点? 至少这是条easy way啊 04/26 23:13
30F:→ hateexam:问题是JAVA档的变数我们并没有完全知道有哪些 04/26 23:13
31F:→ hateexam:可能有多个JAVA档 其实在JAVA档中还有在CALL其他java档 04/26 23:15
32F:→ hateexam:所以无法归纳所有JAVA变数 04/26 23:15
33F:→ nowar100:那要不要改设计 04/26 23:34
34F:→ nowar100:就是别人要用的话 要先来你的class注册这个变数 这样你 04/26 23:34
35F:→ nowar100:就可以知道自己要用到哪些变数 也就可以建map了 04/26 23:34
36F:→ hateexam:应该是说c++曾主动要用的 java端是被动 04/26 23:40
37F:→ nowar100:我作个结论 如果要你说得可以作到动态String XXX; 04/26 23:42
38F:→ nowar100:C, C++, Java 都是作不到的 04/26 23:42
39F:→ hateexam:有哪些变数 再做table... 04/26 23:42
40F:→ nowar100:你说得#define也只是取出传的字串值 不能动态产生变数 04/26 23:42
41F:→ ericinttu:同上 04/26 23:44
42F:→ hateexam:c define能换替换成变数 比方说上的例子 在C CODE 04/26 23:44
43F:→ hateexam:这行 funx("name")唤替换成fun(name) 04/26 23:45
44F:→ nowar100:我说得意思是 你原文的第二行 是不能用#define做到的 04/27 00:37
45F:→ nowar100:而且#define成 #value 只会让原来的value变成字串 04/27 00:39
46F:→ nowar100:不会变成一个int阿 04/27 00:39
47F:→ hateexam:如果萱高int name=0 name就是一个整数变数啊~~" 04/27 00:40
48F:→ hateexam: 宣告Orz 好多错字 抱歉 04/27 00:41
※ 编辑: hateexam 来自: 124.8.150.180 (04/28 01:21)