New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
:let套太多层,会造成一些类型是对象的变量丢失 #55
Comments
won't fix
建议代码写成这样:
|
业务逻辑中可能是通过植入php代码去获取一些值不是纯展示的,比如 - $superPostsCount = ($spbiddingPosts && $topPosts && $pinnedPosts) ? ($spbiddingPosts->count() + $topPosts->count() + $pinnedPosts->count()) : 0; 如果把这部分提前也是可取的,但是有时候前后隔太远,可读性就差了点 :let分层的一部分原因是因为必须要写在一行里,有时候实在是需要处理的太多了才分成了2层,不知道jedi中有没有什么比较好的处理方式
|
这是bug 如果不修的话,会导致非常难和工程师说明这个规则.记忆的成本也会非常大. 此外issue里的例子是contrived,实际viewad和listing里php套插值的多了去了,根本不可能用内带的函数完成 |
计划会支持非嵌套的 let 语句。(但需要一定时间,因为需要完全重构目前binding的实现方式。) 但嵌套 let 本身目前的实现并没有bug。在上面的例子里,只要不是 现在绝大部分地方的 一行写不下的表达式90%的可能是,那是业务逻辑。本来就不应该塞到模板里。 如果有强烈的需求要在模板里写业务逻辑,则需要用其他方法支持,比如加入函数。但肯定不是现在这样。 |
这不切实际。 如果觉得可以不使用 -,那么改正listing.jedi,我不信listing.jedi可以不用- |
现在有很麻烦的事情就是,有些mixin参数太多了,但是jedi又不支持直接使用参数,一定要使用:let接受遍参数
比如以上这个例子,参数有九个,都用let接受一遍一行就很长很长了,别的逻辑只能放到下一层 |
我觉得let就不应该多一层嵌套 一般编程语言或者模板引擎里也不会声明变量就要多缩进啊 于是上面let太长的问题就完全可以写多行而不蛋疼 |
@lyt9304 上面这个代码建议改成这样:
等将来完全支持解构后,可改为
|
@HerringtonDarkholme 前面的comment说了:
另外,嵌套的let是有用的,比如rust/swift的 |
需要cases。然后我会考虑解决。 以下是已知的问题:
|
好吧,我看了一下现在的php插值,基本是这么几类
如果都能修掉的话,估计是有80%的php代码能干掉 |
1、2、6 都在开发中。 |
3的原因就是开发者不愿意在外面多写一个external。那个时代jedi有bug |
嗯,看来我最好给所有 |
当mixin的参数是对象,并且嵌套2层以上:let就会造成变量丢失,但是普通的字符串或者数字不会丢失。
要这样中继一下,才可以在下面读取到。
The text was updated successfully, but these errors were encountered: