代码之家  ›  专栏  ›  技术社区  ›  Franz Wong

当值为正时设置属性

  •  0
  • Franz Wong  · 技术社区  · 7 年前

    我希望在值为Just时设置对象的属性,而不是在值为Nothing时设置属性。但是,如果值为Nothing,则返回的对象将变为Nothing。

    let person = {name: 'Franz'}
    const address = getAddress(response) // getAddress returns Maybe
    
    // person will be Nothing if address is Nothing 
    person = S.map(R.assoc('address', R.__, person))(address)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   davidchambers    7 年前

    看来你的 Person

    Person = { name :: String, (address :: Address)? }
    

    如果可能的话,我建议避免 null , undefined

    //    person :: Person
    const person = {name: 'Franz', address: S.Nothing};
    
    //    address :: Maybe Address
    const address = getAddress (response);
    
    //    person$ :: Person
    const person$ = R.assoc ('address') (address) (person);
    

    address 字段在本例中,您可以使用 S.maybe :

    //    person :: Person
    const person = {name: 'Franz'}
    
    //    address :: Maybe Address
    const address = getAddress (response);
    
    //    person$ :: Person
    const person$ = S.maybe (person)
                            (address => R.assoc ('address') (address) (person))
                            (address);
    

    结果要么是 {name: 'Franz'} {name: 'Franz', address: 'Frankfurter Allee 42'} . 不过,正如我所提到的, {name: 'Franz', address: S.Nothing} {name: 'Franz', address: S.Just ('Frankfurter Allee 42')} 是这些人的更好的代表。

    推荐文章