- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在书籍和文章中读到的例子中经常看到这一点:
(caddr *something*)
或者 c***r 命令的许多变体。
这对我来说似乎有点荒谬,当你可以更清楚地使用 elt
来解决问题时:
(elt *something* 2)
但我没有看到这种技术被广泛使用。
是否有一个我不明白的约定更喜欢 c***r 函数?
最佳答案
elt
是一个适用于列表和数组的通用函数。当你想编写一个对两种数据类型以相同方式工作的通用算法时,就需要它。但是这样的算法并不多,因为这通常会对列表不利。
一般惯例似乎是:
如果您编写一个通用函数来处理列表,您将使用 c(a|d)+r
函数(这种情况非常罕见,因为大多数时候一个库函数)。这通常发生在 Stackoverflow 问题代码/类作业代码等 :)
经验丰富的 Lisp 程序员会尽可能使用 first
、second
等。最佳实践中有时也会提到这一点。最佳实践通常还会提到应该创建适当的数据结构,而不是处理重要的列表。
nth
或 elt
确实很少见,因为很难为它们想出好的用例。我可以想象两者如何在宏中使用,其中性能并不重要,但需要某种通用性,例如,如果有人想以相同的方式处理字符串和字符列表。也许在一些原型(prototype)代码中,程序员还不确定他们将使用什么数据类型,但仅此而已。
关于lisp - 为什么 elt 不像 car、cdr、first、rest 那样常见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19968900/
(抱歉新手问题。)在 Ruby 中,循环之间的区别是什么: @cars.each do |car| 和 for car in @cars do ? 效率上有区别吗,或者为什么我们需要两种(或更多)方式
CREATE DATABASE movies_200186807; USE movies_200186807; CREATE TABLE movies_200186807 ( movie_name
在一本书中找到了第二种初始化对象的方法。现在很困惑。 最佳答案 这声明了一个变量: Car myCar; 该变量的类型为 Car,名为 myCar。但是,它还没有被初始化为任何东西。它是 Car 对象
我正在研究 Pandas 并研究汽车(一个 csv 文件)。我运行了以下命令: 1) cars.iloc[[3, 0]] Out[2]: cars_per_cap country dri
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Do the parentheses after the type name make a differen
除了明确的清晰度,我们为什么要坚持:car.getSpeed()和 car.setSpeed(55)当这也可以使用时:car.speed()和 car.speed(55) 我知道 get() 和 se
var car = function(){ this.color = 'blue'; } car.color1 = 'white'; car.prototype.color2 = 'red'; var
给定汽车列表 (List cars),我可以: Observable.just(cars); //returns an Observable that emits one List Observabl
我正在尝试将此 XML 反序列化为 Parts 对象: gearbox 1990
假设我有标题中描述的结构: Map> mapNeighborhood 包含分别由地址和车牌索引的邻域中的所有汽车。我想选择所有红色汽车将它们重新涂成黑色。为完成该任务,我尝试使用 Java 8 将两个
我在计划中的功能是尝试获取省的详细信息: (define (getProvincesHelper sales provincesList) (if (null? sales) prov
我相信我已经在程序中发现它是这个函数,但是在到达find_best_candidates函数的第一行之前似乎失败了: (define (count-the-score candList voterLi
我正在尝试创建利用 D-Bus 的程序。我研究了 Qt 提供的示例,大致相同。在其中一个名为“D-Bus 遥控汽车示例”的文件中,有一个名为“car.xml”的文件,其中包含以下内容:
我是 Java 新手。抱歉,这个时间太长了。下面是到目前为止我的代码的输出带有 ** 的部分是我遇到问题的地方。我应该比较两个 Car 对象的速度,但每个 Owner 对象要么是“安全”驾驶员,要么是
我想使用car::Anova运行ANCOVA,但无法找出是否有一种方法可以仅将协变量添加为主要效果(即,不应与任何事物交互)。 据我了解的ANCOVA,协变量只是添加到模型中的另一个主要效果(即另一个
我正在尝试在 RStudio 中制作一个 2 面板图。通常足够简单: par(mfrow=c(1,2)) #1*2 plotting window 但是,当我使用 scatterplot() 进行绘图
网上查了很久,不知道怎么申请car重新编码一系列列的值。 要重新编码单个列的值,我将运行如下命令: df$dv_r <- recode(df$dv, "2=1;1=0;0=NA") 然后,如果我想对
有人可以给我一个关于 car 和 cdr 的变体在Scheme中做什么的基本解释吗? 如果我是正确的,car 将返回列表中的第一项。 cdr 将返回一个不包括第一个元素的列表。 我对这些的其他变体感到
我想在eopl中使用typed/racket实现“LET”语言,但遇到问题:我尝试实现三个函数(empty-env、extend-env、apply-env),但我不知道如何标记类型信息,并且rack
我想在eopl中使用typed/racket实现“LET”语言,但遇到问题:我尝试实现三个函数(empty-env、extend-env、apply-env),但我不知道如何标记类型信息,并且rack
我是一名优秀的程序员,十分优秀!