6.4.1 使用 map 函数

我们将使用F# 库中的两个操作,因此,首先要看一下如何使用;然后,讨论如何实现,以及如何在 C# 中使用。我们已经知道,了解 F# 中函数的功能,最好的方法通常是理解类型签名。现在,我们就看一下 Option.map 的类型签名:

> Option.map;;

val it : ((‘a -> ‘b) -> ‘a option-> ‘b option) = (...)

映射(map)操作通常把给定函数应用到由数据类型所包含的值,以相同的结构包装结果。对于选项(option)类型,当值是 Some 时,给定的函数作为第一个参数值(‘a –> ‘b),将应用到由第二个参数值(‘a option)所包含的值;类型 ‘b 的结果将包装在选项类型内,因此,整体结果的类型是 ‘ b option;如果原始选项类型不包含值,映射函数将返回 None。

我们可以使用这个函数代替嵌套的匹配。读取第二个输入时,我们要“映射”所包含的值到新的值中,并与第一个数相加:

match (readInput()) with

| None -> None

| Some(first) -> readInput() |>Option.map (fun second -> first + second)

在第三行,我们已经有了用户输入的第一个数字;接着,使用 readInput() 从控制台读取第二个选项值,我们使用 Option.map,把这个值映射到新的选项值,然后,作为结果返回。Lambda 函数作为参数值使用,把第一个值与选项值所包含的数相加(如果有的话)。

时间: 2024-10-25 16:20:46

6.4.1 使用 map 函数的相关文章

python之Map函数

# map()函数使用举例 # 功能:map()接受一个函数f和一个或多个list,将f依次作用在list的每个元素,得到一个新的列表 # 语法:map(方法名,列表,[列表2]) # 注意:map()函数的返回值需要强制转换成list类型,且不改变原列表值 list_1 = [1, 2, 3, 4, 5] list_2 = [1, 2, 3, 4, 5] # 单个参数 def double_function(number): return number * 2 list_result = li

Python-lambda函数,map函数,filter函数

lambda函数主要理解: lambda 参数:操作(参数). lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值.lambda语句构建的其实是一个函数对象 map函数: map(function_to_apply, list_of_inputs).map函数可以把list_of_inputs内的对象依次输入到function_to_apply中进行操作. filter函数: filter(function_to_apply, list_of_inputs).Filter

python笔记-lambda函数、sorted函数、map函数

1.lambda函数:又称匿名函数,示例如下: def f(x): return x**2 print f(4)  #16 g = lambda x:x**2 print g(4)  #16 2.map函数 print map(lambda x:x**2,range(10)) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 3.sorted函数 dict = {9:2,4:3,6:9,'a':'test','e':'fff','*':'$'} print sorted

python中map()函数

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希望把list的每个元素都作平方,就可以用map()函数: 因此,我们只需要传入

JavaScript中map函数和filter的简单举例(转)

js的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似1)filter是满足条件的留下,是对原数组的过滤:2)map则是对原数组的加工,映射成一一映射的新数组var xx = [1, 2, 5, 7];function pp(x){return x % 2;}function px(x){return x % 2;}var m = xx.map(pp);console.log("m = " + m);var f = xx.filter(p

Swift之map函数的强大之处

CollectionType Map 在CollectionType的extension中map方法的定义: extension CollectionType { /// Return an `Array` containing the results of mapping `transform` /// over `self`. /// /// - Complexity: O(N). @warn_unused_result @rethrows public func map<T>(@noes

Python3中map函数的问题

在Python2中map函数会返回一个list列表,如代码: >>> def f(x, y): return (x, y) >>> l1 = [ 0, 1, 2, 3, 4, 5, 6 ] >>> l2 = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ] 返回结果如下: >>> map(f, l1, l2) [(0, 'Sun'), (1, 'Mon'), (2, 'Tue'),

python map函数

map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于list [1, 2, 3, 4, 5, 6, 7, 8, 9] 如果希望把list的每个元素都作平方,就可以用map()函数: 因此,我们只需要传入函数f(x)=x*x,就可以利用map()函数完成这个计算: def f(x): return x*x print map(f, [1, 2, 3, 4,

map函数原理

# -*- coding: utf-8 -*- #python 27 #xiaodeng #map函数 #map函数会对一个序列对象中的每一个元素应用被传入的函数,并返回一个包含了所有函数调用结果的一个列表 #map函数原理 counters=[1,2,3,4] updated=[] for x in counters: updated.append(x+10) print updated #[11, 12, 13, 14] #map函数 counters=[1,2,3,4] def inc(x

map()函数

map()应用于可迭代的项,其返回结果为一个list map()可以接收两个参数(函数,序列),map将传入的函数依次作用到序列的每一个元素,把结果作为新的list返回 格式为 map(function, iterable, -)    iterable:可迭代的 实例1 '''有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理.''' L=[1,2,3,4,5,6,7,8] def pow2(x): ret