V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lujjjh  ›  全部回复第 7 页 / 共 12 页
回复总数  232
1  2  3  4  5  6  7  8  9  10 ... 12  
@Jirajine 有 implicit return 的话可以用高阶函数实现一部分,但是要支持 children 有多个,像是
html {
head { ... }
body { ... }
}
的话,implicit return 做不到,还需要像是 Swift 的 function builders 或者 Kotlin 的 function literals with receivers + 可省略的 self. / this.。
挽尊,给这个项目本身一点建议。这个项目用来学习写简单的编译器是没问题的,实用角度来看比较尴尬。

这个与其说是给 js 增加了 trailing closure 语法,不如说是搞了个能够 transpile 到 js 的 trailing closure language 。

如果你的想法是在 js 的基础上增加这个语法,那就得考虑很多问题:
1. 怎么兼容 js 现有的语法?
2. 这个语法有什么用,是不是还得配合实现 implicit return 、function builders 之类的特性才真的有用?
3. 怎么兼容 js 的工具链( language server 、eslint……)

如果还是想在 js 的基础上做一些文章而不是设计一个全新的语言,不妨考虑基于现有的语法创建新的语义。比如远古时代的 Wind.js[1] 在不修改 js 语法的基础上实现 async / await ( CPS 变换);再比如 Svelte[2] 用 label 表示 reactive declarations 。

[1]: https://github.com/JeffreyZhao/wind/blob/master/samples/async/browser/quick-start.html
[2]: https://svelte.dev/tutorial/reactive-declarations
@dawn009 看怎么理解表达力了,一般来说,语法越灵活,能定制出的 DSL 也越好用( head { ... } 显然比 head({ ... }) 或者 head(() => ...) 更简洁)。

不过我原文里的意思是,光有 trailing closure / lambda 这个特性是实现不了 html { head { ... } } 这种效果的。比如 head 里需要能够访问到 html 里实例化出的对象,才能把自己 append 进 html.children 。除了 trailing closure / lambda 之外,还需要结合其他特性才能定制出这种 DSL 。
没写过 Swift,发现这个语法挺有趣的,我一开始也以为是 CPS 变换,仔细看发现不是。

搜了下,发现 Kotlin 也有类似的语法 https://kotlinlang.org/docs/lambdas.html#passing-trailing-lambdas

@dawn009 我的看法是,这种语法主要提供了一种定制 DSL 的能力,比如说你提到的 completion handler 就是一个例子,但也不限于 completion handler,比如可以用来定义 with (something) { ... } 的语法(只需要定义一个 with 函数)。表达力强的话甚至可以用来描述 UI,搜了下 SwiftUI 似乎就是这种玩法?

Kotlin 也有用 trailing lambda 定制 DSL 的例子 https://kotlinlang.org/docs/type-safe-builders.html
@css3 方法 1 无效大概率是被你的浏览器缓存了,Python 的 http server 支持 If-Modified-Since
方法 1
python3 -c "from http.server import SimpleHTTPRequestHandler as H, test; H.extensions_map['.txt'] = 'text/plain; charset=UTF-8'; test(H)"

方法 2
Chrome / Edge 安装 https://chrome.google.com/webstore/detail/set-character-encoding/bpojelgakakmcfmjfilgdlmhefphglae 插件,手动设置成 UTF-8
2021-04-02 00:22:08 +08:00
回复了 LeeReamond 创建的主题 问与答 TCP 保证传输可靠是否是伪命题?
Ethernet FCS
@lagoon Unicode 字符导致闪退确实是有,即便是 iOS 也出现过多次。
https://www.zhihu.com/question/390280089

但我也不认同这种因噎废食的做法。
2021-03-25 12:39:28 +08:00
回复了 baifei 创建的主题 程序员 除了程序员,还有多少人做坚持写独立博客、原创博客?
https://programming.plus/blog/
最近开始写科普向的文章,欢迎交流 👏🏻
2021-03-11 16:54:05 +08:00
回复了 M003 创建的主题 分享发现 B 站登录页样式有点奇奇怪怪的
宽度调小可以重现。B 站设置了 max-width 但没有设置 padding,导致宽度窄的时候完全没有留白。
2021-02-26 21:22:03 +08:00
回复了 Kasumi20 创建的主题 Windows 如何发送一个没有通知图标的气泡通知?
@Kasumi20 我测试下来没有复现。如果考虑抛弃 Win7- 的话,可以用 UWP 的 API,也具备更多的能力

https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl

不过对 C++ 不太友好,需要自己注册 COM server
2021-02-26 20:53:31 +08:00
回复了 Kasumi20 创建的主题 Windows 如何发送一个没有通知图标的气泡通知?
Shell_NotifyIconW(NIM_ADD, &nid);
Shell_NotifyIconW(NIM_DELETE, &nid);

加完就删。

但是在 Win7 上估计会比较奇怪,以前的样式是有个箭头指向通知区域图标的。
2020-12-04 22:21:20 +08:00
回复了 jimmyismagic 创建的主题 程序员 代理能够重发消息吗?
你也太小看 TLS 协议了。

「因为 http 是无状态的,链接建立处理完消息就断了,一般不能在一个链接内处理两个 POST 请求」也是错误的。
2020-11-23 17:15:27 +08:00
回复了 Chaox 创建的主题 Go 编程语言 golang 中的切片地址
fmt.Printf("0x%x\n", (*reflect.SliceHeader)(unsafe.Pointer(&months)).Data)
2020-10-10 20:02:54 +08:00
回复了 s609926202 创建的主题 问与答 PHP 数组异常,不正常,有哪些可能的原因?
2020-09-28 23:36:18 +08:00
回复了 poettian 创建的主题 DNS macos 修改 hosts 后,浏览器不会立刻生效的问题
chrome://net-internals/#sockets 干掉 idle sockets 即可。
“ 而在显示 JPG 等位图时,后者就将 4 个像素合并成 1 个像素显示,比如前者的某个像素 rgb 是#ff00ff,那么 4k 显示器对应的那 4 个像素都该是#ff00ff”

并不是的,这种插值算法会带来一堆马赛克。
如果外接屏幕是主屏幕,可以在“显示器”的“排列”里,把显示器的菜单栏拖拽到外接屏幕(不过这样 Dock 也会过去)。
2019-10-20 11:31:32 +08:00
回复了 hanliu 创建的主题 iPhone iPhone 刷机总有一个 APP 存在!
检查一下设置 → 无线局域网 → 使用无线局域网与蜂窝网络的 App,有没有给 App Store 权限?
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1128 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 19:04 · PVG 03:04 · LAX 11:04 · JFK 14:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.