Functional programming 无法读取属性';长度';使用ramda'表示空值;秒

Functional programming 无法读取属性';长度';使用ramda'表示空值;秒,functional-programming,ramda.js,Functional Programming,Ramda.js,以下是两种方法:未注释的一种有效,使用ramdajs的第二种无效: // const dies = col && 2 > count > 3 // const lives = // (col && (count === 2 || count === 3)) || (!col && count === 3) // return dies ? null : lives ? true : null

以下是两种方法:未注释的一种有效,使用ramdajs的第二种无效:

    // const dies = col && 2 > count > 3
    // const lives =
    //  (col && (count === 2 || count === 3)) || (!col && count === 3)

    // return dies ? null : lives ? true : null

    const result = (_col, _count) =>
        R.cond([
            [_col && (_count === 2 || _count === 3), true],
            [!_col && _count === 3, true],
            [_col && 2 > _count > 3, null],
            [R.T, null]
        ])

    return result(col, count)

我收到一个错误
无法读取null的属性“length”

在我看来,您试图过于直接地编写规则

我认为这样做很好:

const nextGeneration = (col, count) => count == 3 || (col && count == 2)
这将返回一个布尔值,而不是
true
|
null
。这让我觉得更干净,但如果您想要空值,只需在末尾添加一个
|null

这不使用Ramda。我看不出有什么理由这么做(免责声明:我是Ramda的作者。)但如果你愿意,我相信我们可以把它变成一些Ramda points的免费版本,但它的可读性可能会低很多


顺便说一句,你的任何版本似乎都有问题。
2>计数>3
应该是什么意思?即使这在JS中扩展为
2>count&&count>3
,但事实并非如此,因为2<3.

在我看来,您试图过于直接地编写规则

我认为这样做很好:

const nextGeneration = (col, count) => count == 3 || (col && count == 2)
这将返回一个布尔值,而不是
true
|
null
。这让我觉得更干净,但如果您想要空值,只需在末尾添加一个
|null

这不使用Ramda。我看不出有什么理由这么做(免责声明:我是Ramda的作者。)但如果你愿意,我相信我们可以把它变成一些Ramda points的免费版本,但它的可读性可能会低很多


顺便说一句,你的任何版本似乎都有问题。
2>计数>3
应该是什么意思?即使这在JS中扩展到了
2>计数和&count>3,但事实并非如此,因为2<3.

接受函数,而不是表达式。谢谢。有没有办法用ramda重写它?最直接的方法是,你可以用
[[u col&&([u count==2 | | | | u count==3),true]
替换
[([u col,[u count]=>u col&([u count==2 | | | | | u count==3),总是(true)]
等等。但是可能有更好的方法。你不能用JavaScript做
a>b>c
。接受函数,而不是表达式。谢谢。有没有办法用ramda重写它?最直接的方法是,你可以用
[[u col&&([u count==2 | | | | u count==3),true]
替换
[([u col,[u count]=>u col&([u count==2 | | | | | u count==3),总是(true)]
等等。但是可能有更好的方法。你不能用JavaScript做
a>b>c。谢谢你的回答。我找到了一种方法:
constoptimalproduction=col&&(count==2 | | count==3)
constreproduction=!col&&count==3
常数生命=最佳总体| |繁殖
回归生命?lives:null
:)@JaredSmith:谢谢你修复了打字错误。通常我校对得更好。谢谢你的回答。我找到了一种方法:
constoptimalproduction=col&&(count==2 | | count==3)
constreproduction=!col&&count==3
常数生命=最佳总体| |繁殖
回归生命?lives:null
:)@JaredSmith:谢谢你修复了打字错误。通常我校对得更好。