block与方法 排序各个国家的名称

  • 什么时候block需要作为方法的参数.

    • 在方法的内部实现功能的时候.如果在实现某个子功能的时候.如果不确定到底如何实现.
    • 只有调用者清楚. 那就让调用者写1段代码实现这个功能 把这个代码通过block参数传递进来.
  • block可以作为函数、方法的返回值

  • . block与函数的异同

    • . 相同点: 都可以封装1段代码在其中.
    • . 不同点:
      • . block是1个数据类型. 而函数就是函数.
      • . block可以作为函数的参数传递。而函数不能直接作为参数传递.
      • . block可以嵌套.函数不能嵌套定义.


ZYArray.h

#import <Foundation/Foundation.h>
typedef BOOL (^SortArray)(char *countries1,char *countries2);
@interface ZYArray : NSObject
- (void)sortWithArray:(char *[])array andLength:(int)length andBlcok:(SortArray)sortArray;
@end

ZYArray.m

#import "ZYArray.h"

@implementation ZYArray
- (void)sortWithArray:(char *[])array andLength:(int)length andBlcok:(SortArray)sortArray
{
    for (int i = 0 ; i<length - 1; i++)
    {
        for (int j = 0  ; j<length - i -1; j++)
        {
           BOOL res = sortArray(array[j],array[j+1]);
            if (res >0)
            {
                char *temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }

    for (int i = 0 ; i<length ; i++)
    {
        NSLog(@"%s",array[i]);
    }
}
@end

main.m

#import <Foundation/Foundation.h>
#import "ZYArray.h"
int main(int argc, const char * argv[])
{
    char *countries[] =
    {
        "Nepal",
        "Cambodia",
        "Afghanistan",
        "China",
        "Singapore",
        "Bangladesh",
        "India",
        "Maldives",
        "South Korea",
        "Bhutan",
        "Japan",
        "Sikkim",
        "Sri Lanka",
        "Burma",
        "North Korea",
        "Laos",
        "Malaysia",
        "Indonesia",
        "Turkey",
        "Mongolia",
        "Pakistan",
        "Philippines",
        "Vietnam",
        "Palestine"
    };
    int length = sizeof(countries)/sizeof(countries[0]);

    ZYArray *array = [[ZYArray alloc]init];
    [array sortWithArray:countries andLength:length andBlcok:^BOOL(char *countries1, char *countries2) {
       return  strcmp(countries1, countries2);
    }];

    return 0;
}

这里是按照首字母排序 当然还可以按照别的方式进行排序 看各位的需求

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 02:44:20

block与方法 排序各个国家的名称的相关文章

[Guava学习笔记]Basic Utilities: Null, 前置条件, Object方法, 排序, 异常

我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3842433.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验. Null Guava用Optional表示可能为null的T类型引用. 创建:Optional.of(T)不接受null Optional.fromNullable(T)接受null Optional.absent() 查询:isPresent() get() or(T)如果为null则为T o

C# Dictionary 的几种遍历方法,排序

Dictionary<string, int> list = new Dictionary<string, int>(); list.Add("d", 1); //3.0以上版本 foreach (var item in list) { Console.WriteLine(item.Key + item.Value); } //KeyValuePair<T,K> foreach (KeyValuePair<string, int> kv

方法/排序

int[] arr = new int[]{ 3,6,8,9 }; System.out.println(arr.length); int len = arr . length ; System.out.println("数组长度为:" + len); /*System.arraycopy方法用于数组复制 *public static void arraycopy (Object src, int srcPos,Object dest, int destPos, int length)

非常强大的table根据表头排序,点击表头名称,对其内容排序

js代码: 1 /** 2 * 通过表头对表列进行排序 3 * 4 * @param sTableID 5 * 要处理的表ID<table id=''> 6 * @param iCol 7 * 字段列id eg: 0 1 2 3 ... 8 * @param sDataType 9 * 该字段数据类型 int,float,date 缺省情况下当字符串处理 10 */ 11 function orderByName(sTableID, iCol, sDataType) { 12 var oTab

按照特定方法排序

uasort($lastingDates, array($this, 'sortLastingDays'));//在这里sortLastingDays为排序方法 //含义是按照数组中的lastingdate的大小进行排序public function sortLastingDays($a, $b){    if ($a->lastingDate == $b->lastingDate) return 0;    return ($a->lastingDate > $b->las

iOS block传值方法

iOS开发中的页面传值方式有很多种,最常见的是代理和属性传值方法,不过,block也可以传值,而且在一些特定的场合中,block传值会更简单,下面是一个我写的一个demo,大家可以参考一下. 在#import "AppDelegate.h"中,代码如下: 在第一个控制器中代码如下 在第二个控制器的.h文件中代码如下 在第二个控制器的.m文件中代码如下

JS 用sort方法排序字符串

JavaScript提供了一种更简便的方法用于比较两个字符串——localeCompare(),localeCompare()使用本地特定的顺序来比较两个字符串,语法如下:string.localeCompare(target)参数target是要与string进行比较的字符串.如果string小于target,则localeCompare()返回小于0的数:如果string大于target,返回大于0的数:如果相等(或按照本地顺序的约定两者顺序相当),则返回0.利用该方法替换上面冗长的作法后,

误用 Kotlin 中的 sortedWith() 方法排序,集合没有变化

时间:2019年8月4日14:17:06问题描述:看下边的小例子: data class Man(val name: String, val age: Int, val type: Int) fun main(args: Array<String>) { val list = mutableListOf<Man>() list.add(Man("wzc", 31,2)) list.add(Man("wzj", 32,1)) list.add(

Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)

Struts2的框架提供了现成的文件下载方式,大大简化的问价下载的使用便利性.网上的列子有很多,我把一些大家普遍比较关注的点,集中一下,给出一个整体方案. 一般我们照着书本或者网上的列子写出了一个Demo,都会存在几个疑问: 1.下载文件的文件名怎么搞?不搞的话浏览器默认名字是提交的action的名字 2.文件名里面想搞中文,但是实际上下载文件名出现了乱码或不显示中文怎么搞? 3.文件的扩展名怎么搞?比如要下载的文件是word(doc,docx)或者excel(xls,xlsx)怎么办?难道让用