block 数值排序 字面量的使用

// 
创建一个block

// 
1.返回值

// 
2.使用‘^’标记一个Block,并写出Block变量

// 
3.确定Block参数列表,参数名可以省略

//  4.‘^’

// 
5.参数列表

// 
6.主题部分,‘{};’

// 
7.在‘{}’内部写具体实现

int
(^myBlock)(int, int) = ^(int
a, int b){

return a +
b;

};

int
(^myBlock1)(int, int) = ^(int
c, int d){

return c +
d;

};

NSInteger
(^Ming)(NSString *) = ^(NSString *p){

return [p
integerValue];

};

//Block与变量

//在Block内部:

//1.全局变量既可以访问,也可以修改

//2.局部变量只可以访问,不可以修改;如果想要修改,需要使用__block修改局部变量

__block int
count = 5;

int
(^sum)(int) = ^(int a){

count =
20;  // 修改局部变量

return a *
count;

};

NSLog(@"%d",sum(10));

//使用Block对数组进行排序

NSArray *arr =
[NSArrayarrayWithObjects:@"asf
60",@"ab
54",@"78",nil];

NSComparator sortBlock =
^(id obj1, id obj2){

return
[obj1 compare:obj2];

};

arr = [arr
sortedArrayUsingComparator:sortBlock];

NSLog(@"%@",arr);  
//字符串比较排序

[arr
sortedArrayUsingComparator:^NSComparisonResult(id
obj1, id obj2) {

return
[obj1 compare:obj2];

}];

//根据数值排序

NSArray *arr1 =
[NSArrayarrayWithObjects:@"456",@"15",@"97",@"1123",
nil];

NSComparator paixu =
^(id obj1, id obj2){

return
[obj1 compare:obj2];

};

arr1 = [arr1
sortedArrayUsingComparator:^NSComparisonResult(id
obj1, id obj2) {

NSInteger
obj1Int = [obj1 integerValue];

NSInteger
obj2Int = [obj2 integerValue];

if
(obj1Int > obj2Int) {

returnNSOrderedDescending;

}else
if(obj1Int < obj2Int){

return NSOrderedAscending;

}else{

return NSOrderedSame;

}

}];

NSLog(@"%@",arr1);

//创建5个学生对象

Student *stu1 =
[[Studentalloc]initWithName:@"zhang"withAge:12];

Student *stu2 =
[[Studentalloc]initWithName:@"li"withAge:21];

Student *stu3 =
[[Studentalloc]initWithName:@"sun"withAge:18];

Student *stu4 =
[[Studentalloc]initWithName:@"wang"withAge:32];

NSMutableArray
*stu = [NSMutableArrayarray];

[stu
addObject:stu1];

[stu
addObject:stu2];

[stu
addObject:stu3];

[stu
addObject:stu4];

[stu
sortUsingComparator:^NSComparisonResult(id
obj1, id obj2) {

Student
*stu1 = (Student *)obj1;

Student
*stu2 = (Student *)obj2;

if ([stu1
getage] > [stu2 getage]) {

return 
NSOrderedDescending;

}if ([stu1
getage] < [stu2 getage]) {

return NSOrderedAscending;

}else{

return NSOrderedSame;

}

}];

for
(Student *student in stu) {

NSLog(@"%@", student);

}

NSLog(@"  
");

[stu
sortUsingComparator:^NSComparisonResult(id
obj1, id obj2) {

Student
*stu1 = (Student *)obj1;

Student
*stu2 = (Student *)obj2;

return
[[stu1 getname]compare:[stu2
getname]];

}];

for
(Student *str in stu) {

NSLog(@"%@", str);

}

//字面量的使用

NSString *p =
@"abc";

NSArray *arry
=@[@"A", @"B",
@"C"];

NSArray *a =
a[2];

NSDictionary *dict =
@{@"kkk":
@"ooo",@"kk2":
@"ooo"};

NSLog(@"%@",dict[@"kkk"]); 
//dict[@"xxx"]
提取“键”对应的值

@{@"asd":
@"789"};  
//设置键、值

block 数值排序 字面量的使用,布布扣,bubuko.com

时间: 2024-10-21 21:39:45

block 数值排序 字面量的使用的相关文章

Swift编程语言学习——数值型字面量、数值类型转换

数值型字面量 整数字面量可以被写作: 一个十进制数,没有前缀 一个二进制数,前缀是0b 一个八进制数,前缀是0o 一个十六进制数,前缀是0x 下面的所有整数字面量的十进制值都是17: let decimalInteger = 17 let binaryInteger = 0b10001 // 二进制的17 let octalInteger = 0o21 // 八进制的17 let hexadecimalInteger = 0x11 // 十六进制的17 浮点字面量可以是十进制(没有前缀)或者是十

04_Swift2基础之类型安全和类型推测+字面量+类型别名

1. 类型安全和类型推测 1> 类型安全 Swift 是一个 _类型安全(type safe)_ 的语言.类型安全的语言可以让你清楚地知道代码要处理的值的类型.如果你的代码需要一个`String`,你绝对不可能不小心传进去一个`Int`. 由于 Swift 是类型安全的,所以它会在编译你的代码时进行 _类型检查(type checks)_ ,并把不匹配的类型标记为错误.这可以让你在开发的时候尽早发现并修复错误. 当你要处理不同类型的值时,类型检查可以帮你避免错误.然而,这并不是说你每次声明常量和

第六讲 Block块语法及Block与数组的排序,ios字面量的使用(源代码上传)

1 #import <Foundation/Foundation.h> 2 3 4 #import "Student.h" 5 6 int c =200; 7 int main(int argc, const char * argv[]) { 8 @autoreleasepool { 9 /* 10 ------------------------------------- 11 定义block变量的四种方法 12 -----------------------------

OC基础第五讲--Block、数组高级、字面量

Block 1.1block与函数指针 函数: int sum(int x, int y) { retrun x + y; } 函数指针: 把上面函数原型int sum(int x, int y)中的函数名替换成(*p),即可得到一个函数指针int (*p)(int x, int y). 这个函数表示指针p指向一个函数,这个函数有两个int型参数,返回值是int类型. Block:把函数指针int (*p)(int x, int y)中的'*'换成'^'就是我们block的声明,即int (^p

OC基础:block.字面量

block 块语法,能够用block去保存一段代码,或者封装一段代码. block 实际是由c语言实现的,运行效率非常高. block 实际借鉴了函数指针的语法. block (^)(參数类型1 參数名1,參数类型2 參数名2...); 返回值类型  (^)(); 1.没有參数,括号也不能省略 2.參数名能够省略 void(^myBlock1)();   无參数无返回值 void(^myBlock2)(int a,int b);   有參数无返回值 int(^myBlock3)();    无參

3、多用字面量语法,少用与之等价的方法

1.字面字符串 摒弃: NSString *someString = [[NSString alloc] initWithString: @"Effective Objective-C 2.0"]; 提倡: NSString *someString = @"Effective Objective-C 2.0"; 2.字面数值 摒弃: NSNumber *someNumber = [NSNumber numberWithInt: 1]; 提倡: NSNumber *i

Literal 字面值 字面量 的理解

Literal 字面值 字面量 Literal, 在程序语言中,指表示某种数据值的符码.如,123 是整数值符码, 3.14 是浮点值符码,abcd 是字串值符码,True, False, 是逻辑值符码,等. Literal 代表的是数据值的本身,区别于“变量”(Variable, 即容纳数据值的 内存址).最直观的理解是,碰到 literal, 你不会想到要往里面写东西:如:123 = "Hello, World!", 象变量 那样.换句话说,Literal 是一个常量(Consta

Swift语言指南(五)--数字字面量和数字类型转换

数字字面量 整数字面量写法如下: · 十进制数,无前缀 · 二进制数,以 0b 为前缀 · 八进制数,以 0o 为前缀 · 十六进制数,以 0x 为前缀 下面所有整数的十进制值为 17 : 1 let decimalInteger = 17 2 let binaryInteger = 0b10001 // 17 二进制标识 3 let octalInteger = 0o21 // 17 八进制标识 4 let hexadecimalInteger = 0x11 // 17 十六进制标识 浮点数字

C语言复合字面量的使用

C99添加的特性,复合字面量(composite literal).一旦熟悉并使用,便会体会到简洁强大的表达. 所谓字面量就是固定数值的表示.数值和字符串类型都有字面量的表达.如: // 100, 1.23f, "literral" 都是字面量 int x = 100; float y = 1.23f; char* s = "literral"; 可看到字面构建的同一时候就能够复制给变量使用.既然是固定数值,那么在初始化的时候就能够构建. 那么复合字面量是几个意思的