GVKun编程网logo

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数(swift高级函数)

5

本文的目的是介绍Emoji上的Swift:换一种视角来理解Swift高阶函数的详细情况,特别关注swift高级函数的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Em

本文的目的是介绍Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数的详细情况,特别关注swift高级函数的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数的机会,同时也不会遗漏关于8、高阶函数、Emoji 表情编解码库 XXL-EMOJI、Google 上线网页版 Emoji Kitchen —— Emoji 表情合成、iOS emoji 表情显示,过滤 emoji 表情的知识。

本文目录一览:

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数(swift高级函数)

Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数(swift高级函数)

总结

以上是小编为你收集整理的Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

8、高阶函数

8、高阶函数

普通函数

高阶函数:参数或返回值是函数

object a_基础 {
  def main(args: Array[String]): Unit = {
    println(mymax(1,2,math.max))

    println(myadd(1)(2))
  }

  def mymax(a:Int,b:Int,f:(Int,Int) => Int)={  //f类型的映射即函数
    f(a,b)
  }

  def myadd(a:Int)={  //返回值类型是函数,inner _ 表示函数本身
    def inner(b:Int)={
      a + b
    }
    inner _
  }
}

匿名函数

scala> arr.map((i:Int) => i*2:Int)  //写明返回值类型
res24: Array[Int] = Array(2,4)

scala> arr.map((i:Int) => i*2)    //推断返回值类型
res25: Array[Int] = Array(2,4)
scala> arr.map((i) => i*2)    //类型推断
res29: Array[Int] = Array(2,4)

scala> arr.map(i => i*2)    //再简化
res30: Array[Int] = Array(2,4)
scala> arr.map(_*2)  //i就出现了一次,最终版
res32: Array[Int] = Array(2,4)

柯里化

定义:将原来接受两个参数的函数变成新的接受一个参数的函数的过程。即柯里化后的函数返回以原来第二个参数作为参数的函数

scala> def add(a:Int,b:Int)=a+b  //原函数
add: (a: Int,b: Int)Int^

scala> def add(a:Int)={b:Int => a + b}  //柯里化
add: (a: Int)Int => Int

scala> add(1)(2)
res0: Int = 3

scala> def add(a:Int)(b:Int) =a + b  //柯里化简化
add: (a: Int)(b: Int)Int

scala> add(3)(4)
res1: Int = 7

好处:将某个参数单独拎出来,以提供更多用于类型推断的信息

 

控制抽象

在scala中,一系列语句可组成不带参数也没有返回值的函数

object c_控制抽象 {
  def main(args: Array[String]): Unit = {
    runinthread(println(Thread.currentThread().getName()))
    runinthread(println(Thread.currentThread().getName()))
  }

  def runinthread(block: => Unit): Unit ={
    new Thread() {
      override def run(): Unit ={
        block
      }
    }.start()
  }

}

Emoji 表情编解码库 XXL-EMOJI

Emoji 表情编解码库 XXL-EMOJI

《Emoji 表情编解码库 XXL-EMOJI》

为方便维护,该项目合并至: https://gitee.com/xuxueli0323/xxl-tool

Google 上线网页版 Emoji Kitchen —— Emoji 表情合成

Google 上线网页版 Emoji Kitchen —— Emoji 表情合成

Google 上线了网页版「Emoji Kitchen」。该功能允许用户选取两个 emoji,由此生成一个新 emoji。

Emoji Kitchen 此前只在 Gboard Android 版提供。目前可以在 Google 搜索栏搜索 Emoji Kitchen 开始使用。

Emoji Kitchen 是谷歌 Gboard 键盘于 2020 年新增加的一个表情创意功能。该功能允许 Android 用户将两个 emoji 表情符号合成制作出表情包后,发送出去。

现在无论是 Google Chrome 或者 Safari,移动端还是桌面端,只要在 Google 搜索栏输入「Emoji Kitchen」即可体验这款合成 emoji 的产品。

iOS emoji 表情显示,过滤 emoji 表情

iOS emoji 表情显示,过滤 emoji 表情

// iOS中的表情符号是emoji表情,需要将表情符号进行转换,后台才能识别。识别方法:

NSString * str1 = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; (iOS 9后被另一个方法替换
NSString * str1 =  [str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet];
)
// 我们给后台上传的是Hahh%F0%9F%98%85这样的字符串,同样发回给我们的也是Hahh%F0%9F%98%85。
// 那么问题来了,我们要怎样识别这些表情字符,并将表情显示出来?这时就需要我们使用另一个方法,将表情符号识别并显示出来了

 NSString * str2 = [str1  stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"%@", str2);(iOS9之后被另一个方法替换:
NSString * str2 = [str1 stringByRemovingPercentEncoding];

//过滤表情
+ (NSString *)filterEmoji:(NSString *)string {
    NSUInteger len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
    const char *utf8 = [string UTF8String];
    char *newUTF8 = malloc( sizeof(char) * len );
    int j = 0;

    //0xF0(4) 0xE2(3) 0xE3(3) 0xC2(2) 0x30---0x39(4)
    for ( int i = 0; i < len; i++ ) {  
        unsigned int c = utf8;
        BOOL isControlChar = NO;
        if ( c == 4294967280 ||
            c == 4294967089 ||
            c == 4294967090 ||
            c == 4294967091 ||
            c == 4294967092 ||
            c == 4294967093 ||
            c == 4294967094 ||
            c == 4294967095 ||
            c == 4294967096 ||
            c == 4294967097 ||
            c == 4294967088 ) {
            i = i + 3;
            isControlChar = YES;
        }
        if ( c == 4294967266 || c == 4294967267 ) {
            i = i + 2;
            isControlChar = YES;
        }
        if ( c == 4294967234 ) {
            i = i + 1;
            isControlChar = YES;
        }
        if ( !isControlChar ) {
            newUTF8[j] = utf8;
            j++;
        }
    }
    newUTF8[j] = ''\0'';
    NSString *encrypted = [NSString stringWithCString:(const char*)newUTF8
                                             encoding:NSUTF8StringEncoding];
    free( newUTF8 );
    return encrypted;
}
3.通过判断用户输入的字符串时候含有表情来进行对应的操作

//是否含有表情
+ (BOOL)stringContainsEmoji:(NSString *)string
{
    __block BOOL returnValue = NO;

    [string enumerateSubstringsInRange:NSMakeRange(0, [string length])
                               options:NSStringEnumerationByComposedCharacterSequences
                            usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                const unichar hs = [substring characterAtIndex:0];
                                if (0xd800 <= hs && hs <= 0xdbff) {
                                    if (substring.length > 1) {
                                        const unichar ls = [substring characterAtIndex:1];
                                        const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                                        if (0x1d000 <= uc && uc <= 0x1f77f) {
                                            returnValue = YES;
                                        }
                                    }
                                } else if (substring.length > 1) {
                                    const unichar ls = [substring characterAtIndex:1];
                                    if (ls == 0x20e3) {
                                        returnValue = YES;
                                    }
                                } else {
                                    if (0x2100 <= hs && hs <= 0x27ff) {
                                        returnValue = YES;
                                    } else if (0x2B05 <= hs && hs <= 0x2b07) {
                                        returnValue = YES;
                                    } else if (0x2934 <= hs && hs <= 0x2935) {
                                        returnValue = YES;
                                    } else if (0x3297 <= hs && hs <= 0x3299) {
                                        returnValue = YES;
                                    } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
                                        returnValue = YES;
                                    }
                                }
                            }];

    return returnValue;
}

 

关于Emoji 上的 Swift:换一种视角来理解 Swift 高阶函数swift高级函数的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于8、高阶函数、Emoji 表情编解码库 XXL-EMOJI、Google 上线网页版 Emoji Kitchen —— Emoji 表情合成、iOS emoji 表情显示,过滤 emoji 表情等相关内容,可以在本站寻找。

本文标签: