为什么需要使用<button class="btn label-info" data-toggle="collapse" data-target="#demo_{{$index}}" ng-click="findScheduledHours(schedule);">Book Appointment</button>
<div id="demo_{{$index}}" class="collapse">
<form class="col-sm-12">
<div ng-repeat="scheduledHour in hoursList">
<div class="col-sm-3">
<button type="button" class="buttonAppointment" ng-click="selectScheduleSub(scheduledHourDto,scheduledHourDto.appointmentStartedDate,appointment.appointmentEnddate,scheduledHour);">{{scheduledHour}}</button>
</div>
</div>
</form>
</div>
中的.constant(value)
?我看到其他一些人使用lodash/fp/constant
或_.constant(true)
,但不知道它有什么好处。
据我所知_.constant(1)
返回一个返回给定.constant(value)
的函数。我知道它与函数式编程有关,但为什么不只使用value
?
答案 0 :(得分:3)
一个用例是在创建时填充数组:
Array.from({length: 5}, _.constant(1))
但没有它实际上会更短:
Array.from({length: 5}, () => 1);
答案 1 :(得分:2)
constant
的用例只有在您了解功能范例时才会变得清晰。通过函数式编程,几乎所有东西都可以用函数表达。常数也不例外。这是一个人为的例子:
const map = f => xs =>
xs.map(f);
const co = x => y => x;
console.log(
map(co(0)) ([1,2,3]) // [0,0,0]
);
让我们实现一个更复杂的例子。我们想要一个需要两个monadic计算(aka动作)的函数,但我们只对第二个动作的结果感兴趣。那么为什么我们首先需要第一个动作呢?因为我们对它的副作用感兴趣:
const chain = mx =>
fm => x => fm(mx(x)) (x);
const co = x => y => x;
const seq = mx => my =>
chain(mx) (co(my));
const sqr = n =>
n * n;
// monadic sequence
const z = seq(console.log) (sqr);
// apply it
const r = z(5); // logging 5 is the observed effect
console.log("return value:", r); // logs the return value 25
通常,带console.log
的作文会导致错误:add(console.log(5)) (5)
会产生NaN
。但我们的实际构图看起来像add(co(sqr) (console.log(5)) (5)
,并根据需要产生25
。
然而,正如我上面提到的,要理解利用constant
的高级功能习语,你需要正确理解范式。
答案 2 :(得分:1)
来自https://github.com/jashkenas/underscore/issues/402#issuecomment-3112193:
// api: object.position = function(time) { return coords }
circle.position = _.constant( [10, 10] )
// api: image.fill( function(x, y) { return color })
image.fill( _.constant( black ) );
因此,主要用于将常量传递给期望函数的API。好的。