如何快速给类似的变量名赋值

现在有一个需求,controller中有四个变量,需要方便的赋同样的值,如何实现呢?

{
    NSArray *_arr1;
    NSArray *_arr2;
    NSArray *_arr3;
    NSArray *_arr4;
}

我用到了Object-C的运行时去解决这个问题。

    for (int i = 1; i < 5; i ++) {
        //获得变量,第一个参数是变量的所属类,第二个参数是变量名字符串,需转换成C的字符串
        Ivar var = class_getInstanceVariable([self class], [[NSString stringWithFormat:@"_arr%d",i] UTF8String]);
        //给变量赋值,第一个参数是变量所属的类对象,第二个参数是需要赋值的变量,第三个参数是赋的值
        object_setIvar(self, var, @[@"a",@"b"]);
    }

打印下

2015-04-26 14:56:19.362 Runtime[23492:599694] arr1 = (
    a,
    b
)
2015-04-26 14:56:19.363 Runtime[23492:599694] arr2 = (
    a,
    b
)
2015-04-26 14:56:19.363 Runtime[23492:599694] arr3 = (
    a,
    b
)
2015-04-26 14:56:19.363 Runtime[23492:599694] arr4 = (
    a,
    b
)

赋值成功!

时间: 2024-10-16 13:27:38

如何快速给类似的变量名赋值的相关文章

python load mat 并按变量名赋值

import numpy as np import scipy.io as io creat = locals() tmp = io.loadmat("all.mat") for i in tmp: print i creat[i] = tmp[i]

怎么样获取PHP变量的变量名之扩展实现

很长时间没有更新博客了. 一来最近工作比较忙,没有时间好好研究问题, 二是觉得没有很好的材料可以写. 也有一些没有彻底研究透的问题,写着写着没有了头绪,都扔在了草稿箱里了. 这次顺带也要更新一下博客的模版了, 现在的这个模版主体有点窄,不适合阅读. 我这个博客现在,以后主要还是写一些技术的东西.还是换一个眼睛友好的主题吧. 本文要解决的是从去年就一直在考虑的一个PHP的问题: 怎么样获取PHP变量的变量名. 一直以来都没有好好的研究.最近断断续续的开始看PHP源代码.并尝试解决. 直到两星期前把

ASP中轻松实现变量名-值变换

用过PHP的朋友都知道,PHP中变量的使用灵活方便,特别是能在字符串中方便实现变量名-值变换,使得整个PHP代码更显简洁优美.比如一条更新数据库的SQL语句只需写成:"update users set password='$password', group=$group, name='$username' where account='$account'",其中的$password.$group.$username.$account便会被实际的变量值替换,而在ASP中要实现相同的功能必

python 变量名解析 LEGB原则

对于一个def语句: 变量名分为三个作用域进行查找:首先是本地,之后是函数内,之后是全局,最后是内置 在默认的情况下,变量名赋值会创建或者改变本地变量 当函数中使用未认证的变量名时,Python就会搜索4个作用域(本地作用域,之后是上一层结   构中def或lambda的本地作用域,之后是全局作用域,最后是内置作用域, 但函数中给一个变量名赋值时,Python总是创建或者改变本地作用域的变量名,除非它已经在那个函数中声明为 全局变量 当在函数之外给一个变量名赋值时(也就是一个模块文件的顶层)本地

小胖学PHP总结2-----PHP的b变量和赋值

一.总述 虽然PHP是弱类型语言,但是有时仍然需要用到类型转换.下面写一下类型转换和定义变量以及变量赋值. 1.1 类型转换 PHP中的类型转换和C语言一样,非常简单,只需在变量前加上用括号括起来的类型名称即可. <?php //类型转换 说明:使用操作符转换变量的时候,不会改变原有的值,而使用settype函数转换时,改变了原有的值 $num = '3.1415926r'; echo '使用(integer)操作符转换变量$num类型:'. (integer)$num; echo '<p&g

C语言中变量名及函数名的命名规则与驼峰命名法

一.C语言变量名的命名规则:(可以字母,数字,下划线混合使用) 1. 只能以字母或下划线开始:2. 不能以数字开始:3. 一般小写:4. 关键字不允许用(eg:int float=2//error  float 为保留字不允许用): 二.函数名的命名规则 1.见名知意:2.自定义函数函数名首字母大写(库函数里的函数名都是以小写字母定义,为了区分库函数和自定义函数,避免冲突). 三.宏定义里面的变量 全大写 eg:#define SIZE 100(后面函数所有出现的SIZE全用100代替,它在所有

js中变量名提升和函数名提升

首先,js中变量没有块级作用域,但是有函数作用域,即只有函数可以约数变量的作用域. 并且,函数的实质也是一个变量,所以可以改变它的值,即赋值.所以变量名提升和函数名提升非常相像. 1.变量名的提升发生在函数内部.看下面的例子.说明:第一个因为弹出undefined,相当于在上面定义了var num;因为函数内部,定义了var num=20:就相当于在一开始定义了var num;这就是变量名的提升. var num = 10; function func() { alert(num); //und

变量名提升

预解析的过程 代码的执行过程 程序在执行过程,会先将代码读取到内存中检查,会将所有的声明在此时进行标记.所谓的标记就是让js解释器直到有这个名字,后面在使用名字的时候,不会出现未定义的错误,这个标记就是提升 声明: 名字的声明,标识符的声明(变量名的提升) 名字的声明就是让我的解释器知道有这个名字 名字没有任何数据与之对应 函数的声明 函数声明包含两部分 首先告诉解释器函数的名字 告诉解释器 这个名字对应的函数体是什么 函数声明与函数表达式有区别,函数声明是单独写在一个结构中,不存在任何语句,逻

Java变量名命名规则

$ .字母.下划线开头都行,后面的可以是数字.字母.下划线: 匈牙利命名法.Camel命名法与Pascal命名法 匈牙利命名法:在Windows编程中使用非常普遍,由微软的一位匈牙利程序员提出.匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域.类型等.例如,m_lpszStr表示指向一个以0字符结尾的字符串的长指针成员变量.在面向对象的程序设计中匈牙利命名法使用起来非常别扭. Camel命名法:即骆驼式命名法,原因是采用该命名法的名称看起来就像骆驼的驼峰一样高