- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前是FP的学生。当我查看不同函数式语言提供的不同语法时,我在 Elm 示例代码中遇到了一个模式。我对此很好奇。
这是示例代码
myList = [{foo = "bar1"},{foo = "bar2"}]
foos = myList |> List.map .foo
List.map
正在通过
.foo
.我相信这种风格被称为无点,但是将属性传递给
List.map
的特定模式如何?功能?
最佳答案
如果您将列表视为“数据集”或“表”,并将列表中的每个元素视为“行”,并将元素的数据类型定义为“属性”的枚举,那么您get 是关系代数意义上的一种“投影”:https://en.wikipedia.org/wiki/Projection_(relational_algebra) .
这是一个 Scala 示例,感觉有点像 SQL:
case class Row(id: Int, name: String, surname: String, age: Int)
val data = List(
Row(0, "Bob", "Smith", 25),
Row(1, "Charles", "Miller", 35),
Row(2, "Drew", "Shephard", 45),
Row(3, "Evan", "Bishop", 55)
)
val surnames = data map (_.surname)
val ages = data map (_.age)
val selectIdName = data map { row => (row.id, row.name) }
println(surnames)
// List(Smith, Miller, Shephard, Bishop)
println(selectIdName)
// List((0,Bob), (1,Charles), (2,Drew), (3,Evan))
_.fieldName
是类型为
Row => TypeOfTheField
的内联函数文字的简短语法.
data Row = Row { id :: Int
, name :: String
, surname :: String
, age :: Int
} deriving Show
main = let dataset = [ Row 0 "Bob" "Smith" 25
, Row 1 "Charles" "Miller" 35
, Row 2 "Drew" "Shephard" 45
, Row 3 "Evan" "Bishop" 55
]
in print $ map name dataset
-- prints ["Bob","Charles","Drew","Evan"]
import java.util.*;
import java.util.stream.*;
import static java.util.stream.Collectors.*;
class JavaProjectionExample {
private static class Row {
private final int id;
private final String name;
private final String surname;
private final int age;
public Row(int id, String name, String surname, int age) {
super();
this.id = id;
this.name = name;
this.surname = surname;
this.age = age;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public String getSurname() {
return this.surname;
}
public int getAge() {
return this.age;
}
}
public static void main(String[] args) {
List<Row> data = Arrays.asList(
new Row(0, "Bob", "Smith", 25),
new Row(1, "Charles", "Miller", 35),
new Row(2, "Drew", "Shephard", 45),
new Row(3, "Evan", "Bishop", 55)
);
List<Integer> ids = data.stream().map(Row::getId).collect(toList());
List<String> names = data.stream().map(Row::getName).collect(toList());
System.out.println(ids);
System.out.println(names);
}
}
Row::getterName
是 getter 方法的特殊语法,它是类型
Function<Row, FieldType>
的值.
关于scala - 思考 Elm 中所见模式的名称以及是否有其他类似情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510844/
有没有办法让文字不上下跳动?我不能使用position:absolute。因为它弄乱了我网站的其余部分。请看这个 fiddle :http://jsfiddle.net/9xn19111/11/ 这是
我正在尝试将文本“WE CREATE DANCE”“WE HAVE FUN”“WE LOOK GOOD”放置在一个容器内,该容器将根据文本的大小和文本的行数进行调整。容器的大小是未知的,因为它是动态的
我正在构建一个 Wasm 应用程序并编译它,我有一个 shell 脚本。 当我从终端手动运行它时,我有以下内容: /app/Go/assets$ ./script.compile.wasm.sh Wa
我正在关注 URL: https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-intel
我想看到我在 Chrome 中悬停的 anchor 的 :hover 样式。在 Firebug 中,有一个样式下拉列表允许我为元素选择不同的状态。 I can't seem to find anyth
我刚刚尝试安装 git-flow,但是,它似乎没有与 git 正确集成,我该怎么做才能将 gitflow 与 git 集成?我可以手动执行此操作吗? 谢谢,杰弗里 [root@sa 2]# wget
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: “git pull” broken 在我的 MAC 上使用 git version 1.7.5.4 当尝试从
我连接了 bitbucket,我在我的电脑上安装了 Git 和 sourcetree,我尝试将 sourcetree 和 bitbucket 连接在一起。但我无法将两者联系起来。当我尝试克隆存储库源路
我设置了github for mac 现在我正尝试从终端使用 git 命令。 如果我尝试运行 git rebase 命令,我会收到以下消息 > cd /Applications/GitHub.app/
我正在尝试使用 git send-email 发送补丁,但我收到以下错误: git: 'send-email' is not a git command. See 'git --help'. 如何使
尝试按照说明从 docker 网站构建 docker 镜像。 https://docs.docker.com/examples/running_redis_service/ 这是我得到的错误,我会按照
当我尝试从本地文件中 pull 、克隆或推送某些内容时出现此错误。我尝试使用以下方法解决: Reupdating path variable to C:\Program Files\Git\cmd\g
我目前正在使用 Cloudera 5.6 尝试基于另一个表在 hive 表中创建 Parquet 格式表,但我遇到了错误。 create table sfdc_opportunities_sandbo
我在 visual studio 2010 中使用 git 进行源代码控制。我可以使用诸如“git status”、“git commit”之类的命令,但是当我尝试使用“git review”时,我得
如何解决“MacBook pro”上的此错误。 git: 'credential-wincred' is not a git command. See 'git --help'. git: 'cred
以下 java 8 流没有任何终端操作。下面这个块是不是应该是懒惰的,因为我只有中间操作,还没有被终端操作操作过。当我运行这个块时,我得到“流已经被操作或关闭”。见 https://ideone.co
我是一名优秀的程序员,十分优秀!