digitalmars.dip.ideas - ternary op assign
- monkyyy (3/3) May 02 `foo?=bar:baz` is rewritten as `foo.opOpAssign!("?:")(bar,baz)`
- Stefan Koch (3/6) May 02 I find this syntax confusing, I would interpret that as:
- monkyyy (17/25) May 02 often the statement you want to write is a=condition?b:a which
- Quirin Schroll (3/6) May 16 Isn’t this just `if (!bar) foo = baz;`?
- monkyyy (7/15) May 16 when bar depends on foo; such as a user defined cond, lets saya
`foo?=bar:baz` is rewritten as `foo.opOpAssign!("?:")(bar,baz)` `foo[i]?=bar:baz` opIndexOpAssign for basic types it acts as `foo=(bool)bar?foo:(typeof(foo))baz`
May 02
On Thursday, 2 May 2024 at 17:42:28 UTC, monkyyy wrote:`foo?=bar:baz` is rewritten as `foo.opOpAssign!("?:")(bar,baz)` `foo[i]?=bar:baz` opIndexOpAssign for basic types it acts as `foo=(bool)bar?foo:(typeof(foo))baz`I find this syntax confusing, I would interpret that as: `foo[i] = (foo[i] ? bar : baz);`
May 02
On Thursday, 2 May 2024 at 18:17:12 UTC, Stefan Koch wrote:On Thursday, 2 May 2024 at 17:42:28 UTC, monkyyy wrote:often the statement you want to write is a=condition?b:a which repeats a, the way to simplify (and prevent int promtion issues) is with the += family of statements; but there isnt a clear one for if(cond)a=b Simd(/waterfalled code) has to do bit mask tricks, and I think you could wrap that up in a data structure with the opslice as recursive templates for opindex logic ```d a/=4; b+=a; if(a>b)a=b; --- a[0..4]/=4; b[0..4]+=a[0..4]; ???? ````foo?=bar:baz` is rewritten as `foo.opOpAssign!("?:")(bar,baz)` `foo[i]?=bar:baz` opIndexOpAssign for basic types it acts as `foo=(bool)bar?foo:(typeof(foo))baz`I find this syntax confusing, I would interpret that as: `foo[i] = (foo[i] ? bar : baz);`
May 02
On Thursday, 2 May 2024 at 17:42:28 UTC, monkyyy wrote:`foo?=bar:baz` is rewritten as `foo.opOpAssign!("?:")(bar,baz)` `foo[i]?=bar:baz` opIndexOpAssign for basic types it acts as `foo=(bool)bar?foo:(typeof(foo))baz`Isn’t this just `if (!bar) foo = baz;`? Where would the user-defined operator be useful?
May 16
On Thursday, 16 May 2024 at 16:57:17 UTC, Quirin Schroll wrote:On Thursday, 2 May 2024 at 17:42:28 UTC, monkyyy wrote:when bar depends on foo; such as a user defined cond, lets saya database query that takes in lamdas `foo?=a=>a%2:baz` and when its "multiable data single instruction", simd or parrellizism, ranges etc. and theres something in that index you can not write `if(!bar[foo's slice????]) foo=baz[...];``foo?=bar:baz` is rewritten as `foo.opOpAssign!("?:")(bar,baz)` `foo[i]?=bar:baz` opIndexOpAssign for basic types it acts as `foo=(bool)bar?foo:(typeof(foo))baz`Isn’t this just `if (!bar) foo = baz;`? Where would the user-defined operator be useful?
May 16