实例变量

《转》__block修饰符

烂漫一生 提交于 2020-02-05 22:05:09
我们知道在Block使用中,Block内部能够读取外部局部变量的值。但我们需要改变这个变量的值时,我们需要给它附加上 __block 修饰符。 __block 另外一个比较多的使用场景是,为了避免某些情况下Block循环引用的问题,我们也可以给相应对象加上 __block 修饰符。 为什么不使用__block就不能在Block内部修改外部的局部变量? 我们把以下代码通过 clang -rewrite-objc 源代码文件名 重写: int main(int argc, const char * argv[]) { @autoreleasepool { int val = 10; void (^block)(void) = ^{ NSLog(@"%d", val); }; block(); } return 0; } 得到如下代码: struct __main_block_impl_0 { struct __block_impl impl; struct __main_block_desc_0* Desc; int val; __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int _val, int flags=0) : val(_val) { impl.isa = &

Ansible剧本管理(实例解释!!!)

纵然是瞬间 提交于 2020-02-03 23:12:04
inventory主机清单 ansible默认的主机清单是/etc/ansible/hosts文件,主机清单可以手动设置,也可以通过Dynamic Inventory动态生成,一般主机名使用FQDN vim /etc/ansible/hosts [webserver] #方括号设置组名 www1.example.org #定义被监控主机,这边可以是主机名也可以是IP地址,主机名需要修改/etc/hosts文件 www2.example.org:2222 #冒号后定义远程连接端口,默认是ssh的22端口 如果是名称类似的主机,可以使用列表的方式标识各个主机 [webserver] www[01:50].example.org ansible_ssh_user=root ansible_ssh_pass=123456 [dbbservers] db-[a:f].example.org inventory变量 主机变量 [webserver] www1.magedu.com http_port=80 maxRequestsChild=808 www2.magedu.com http_port=8080 maxRequestsChild=909 组变量 [servers:vars] ntp_server=ntp.example.org nfs_server=nfs.example.org

JAVA匿名内部类(Anonymous Classes)

霸气de小男生 提交于 2020-02-01 22:30:01
1.前言 匿名内部类在我们JAVA程序员的日常工作中经常要用到,但是很多时候也只是照本宣科地用,虽然也在用,但往往忽略了以下几点:为什么能这么用?匿名内部类的语法是怎样的?有哪些限制?因此,最近,我在完成了手头的开发任务后,查阅了一下JAVA官方文档,将匿名内部类的使用进行了一下总结,案例也摘自官方文档。感兴趣的可以查阅官方文档( https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html )。 2.匿名内部类 匿名内部类可以使你的代码更加简洁,你可以在定义一个类的同时对其进行实例化。它与局部类很相似,不同的是它没有类名,如果某个局部类你只需要用一次,那么你就可以使用匿名内部类(Anonymous classes enable you to make your code more concise. They enable you to declare and instantiate a class at the same time. They are like local classes except that they do not have a name. Use them if you need to use a local class only once.) 本节包括以下几个方面:

PHP 变量

ε祈祈猫儿з 提交于 2020-02-01 00:10:53
变量是用于存储信息的"容器": 实例 <?php$x=5;$y=6;$z=$x+$y;echo$z;?> 运行实例 » 与代数类似 x=5 y=6 z=x+y 在代数中,我们使用字母(如 x),并给它赋值(如 5)。 从上面的表达式 z=x+y ,我们可以计算出 z 的值为 11。 在 PHP 中,这些字母被称为变量。 PHP 变量 与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。 变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。 PHP 变量规则: 变量以 $ 符号开始,后面跟着变量的名称 变量名必须以字母或者下划线字符开始 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ ) 变量名不能包含空格 变量名是区分大小写的($y 和 $Y 是两个不同的变量) 创建(声明)PHP 变量 PHP 没有声明变量的命令。 变量在您第一次赋值给它的时候被创建: 实例 <?php$txt="Hello world!";$x=5;$y=10.5;?> 运行实例 » 在上面的语句执行中,变量 txt 将保存值 Hello world!,且变量 x 将保存值 5。 注释:当您赋一个文本值给变量时,请在文本值两侧加上引号。 PHP 是一门弱类型语言 在上面的实例中,我们注意到,不必向 PHP

Python 简单入门指北(二)

六眼飞鱼酱① 提交于 2020-01-30 08:50:22
Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值。总而言之,函数和普通变量并没有什么区别。 函数是一等公民,这是函数式编程的基础,然而 Python 中基本上不会使用 lambda 表达式,因为在 lambda 表达式的中仅能使用单纯的表达式,不能赋值,不能使用 while、try 等语句,因此 lambda 表达式要么难以阅读,要么根本无法写出。这极大的限制了 lambda 表达式的使用场景。 上文说过,函数和普通变量没什么区别,但普通变量并不是函数,因为这些变量无法调用。但如果某个类实现了 __call__ 这个魔术方法,这个类的实例就都可以像函数一样被调用: class Person: def __init__(self): self.name = 'bestswifter' self.age = 22 self.sex = 'm' def __call__(self): print(self) def __str__(self): return 'Name: {user.name}, Age: {user.age}, Sex: {user.sex}'.format(user=self) p = Person() p() # 等价于 print(p)

JAVA中的成员变量与局部变量

非 Y 不嫁゛ 提交于 2020-01-30 03:53:51
成员变量 成员变量:在类中定义的变量,分为类变量(static修饰)和实例变量(没有satic修饰); 类变量作用域:从该类开始到该类结束,作用域与该类的生存范围相同(与类本身共存亡); 实例变量作用域:从该实例对象被创建开始直至该实例对象销毁,作用域与该实例对象的生存范围相同(与实例共存亡); 1、类存在,访问该类的类变量: 类.类变量 ( Person.eyeNum); 2、实例存在,访问该类的实例变量:实例.实例变量 (p.name); 3、该类实例访问类变量:实例.类变量 ( p.eyeNum)(注意:由于该实例并不拥有类变量,所以通过实例修改类变量的值时,修改的依然是类的类变量,与通过类修改类变量的结果完全相同,修改后其他实例访问该类变量时,获取的修改后的类变量的值) eg: class Person { //定义一个实例变量 public String name ; //定义一个类变量 public static int eyeNum ; } public class PersonTest { public static void main ( String [ ] args ) { //第一次使用Person类,该类自动初始化,eyeNum变量输出为0 System . out , println ( "eyeNum变量值" + Person . eyeNum ) ;

深入理解C# 第三版学习笔记

不羁的心 提交于 2020-01-29 22:52:44
第一章 P1 本书的关键主题之一就是进化(或者说演变)。在将任何特性引入语言之前,设计团队都会把这个特性放到现有的环境中,同时还会就其总体发展目标,对其进行严格的考察。 P4 (在P3展示了C#1.0中产品类及列表的定义方法后) C# 1的代码存在如下3个局限: ArrayList没有提供与其内部内容有关的编译时信息。完全有可能不慎在Product类型的ArrayList列表中添加一个字符串类型的对象后,编译器还当做无事发生过 代码中为属性提供了公共的取值方法,这意味着如果添加对应的赋值方法,那么赋值方法也必须是公共的。 用于创建属性和变量的代码过于复杂 P5-7 (展示了C#2、3版本中对上述三个问题的解决方法) 使用支持泛型的List取代类型不安全的ArrayList。后者考虑到兼容性依然保留,但不再推荐使用 public属性可以有private的赋值方法 支持自动实现与简化对象的属性 P8 排序和过滤的代码示范 在C#1的代码中,通过实现ArrayList的IComparer接口对列表进行排序。期间必须实现两次强制类型转换,将两个在ArrayList中以Object类型存储的,待比较的对象转化为Product,然后再比较。不仅涉及到性能问题,也有类型不安全的隐忧 P9 使用泛型与匿名函数优化后的代码 使用泛型使我们跳过了强制类型转换,而匿名函数则精简了接口的实现过程

Oracle PLSQL语句实例

霸气de小男生 提交于 2020-01-28 23:14:00
/** * plsql:某个项目对效率要求比较高的时候用,一般不用,大多数项目写的是夸数据库平台的,用不上。 * pssql大多数能做的东西,java都能替代它。在某些特殊的地方要求用plsql的时候你才会用。 * * 变量声明的规则: * 1、变量名不能使用保留字,如from、select等 * 2、第一个字符必须是字母 * 3、变量名最多包含30个字符 * 4、不要与数据库的表或者列同名 * 5、每一行只能声明一个变量 * * 常用变量类型 * 1、 binary_integer:整数,主要用于计数而不是用来表示字段类型 * (Oracle本身非常注重效率,他的很多设计都是为了效率) * 2、number:数字类型 * 3、char:定长字符串 * 4、varchar2:变长字符串 * 5、date:日期 * 6、long:长字符创,最长2GB * 7、boolean:布尔类型,可以取为true、false和null值 * */ set serveroutput on;--默认是关闭的 begin dbms_output.put_line('HelloWorld'); end;--输出HelloWorld declare v_name varchar2(20); begin v_name:='mynaem'; dbms_output.put_line(v_name); end;

Java变量类型

ε祈祈猫儿з 提交于 2020-01-28 21:20:37
Java变量类型 Java语言支持的变量类型有: 类变量:独立于方法之外的变量,用static修饰。 实例变量:独立于方法之外的变量,不过没有static修饰。 局部变量:类的方法中的变量。 1 public class Variable{ 2 static int allClicks=0;//类变量 3 String str="hello world";//实例变量 4 public void method(){ 5 int I=0;//局部变量 6 } 7 } Java局部变量 局部变量声明在 方法、构造方法或者语句块中 ; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量; 局部变量只在声明它的方法、构造方法或者语句块中可见; 局部变量是在 栈上分配 的; 局部变量没有默认值 ,所以局部变量在被声明后,必须经过初始化,才可以使用。 实例1 1 public class Test{ 2 public void pupAge(){ 3 int age=0;//局部变量必须初始化,否则在编译时会出错 4 age=age+7; 5 System.out.println("小狗的年龄是:"+age); 6 } 7 public static void main(String[] args){ 8 Test test

java基本知识点3

若如初见. 提交于 2020-01-28 08:47:47
Java 变量类型 Java 局部变量 局部变量声明在方法、构造方法或者语句块中; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁; 访问修饰符不能用于局部变量; 局部变量只在声明它的方法、构造方法或者语句块中可见; 局部变量是在栈上分配的。 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。 package com . runoob . test ; public class Test { public void pupAge ( ) { int age = 0 ; age = age + 7 ; System . out . println ( "小狗的年龄是: " + age ) ; } public static void main ( String [ ] args ) { Test test = new Test ( ) ; test . pupAge ( ) ; } } 运行结果: 小狗的年龄是: 7 实例变量 变量声明在一个类中,但在方法、构造方法和语句块之外; 当一个对象被实例化之后,每个实例变量的值就跟着确定; 实例变量在对象创建的时候创建,在对象被销毁的时候销毁; 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息; 实例变量可以声明在使用前或者使用后;