WWW.YOUINFO.SITE
标签聚合 语法

/tag/语法

LinuxDo 最新话题 · 2026-06-01 21:09:52+08:00 · tech

自从认识几个老外以后,跟他们交流,才知道跟老外说话哪有什么语法,纯中式英文都是可以听懂的,跟老外我说我也谢谢你我不说I thank you too,我说I also thanks,你说的对, you say ok,no maobing,再比如说,你忘了spicy,你可以跟老外说,no,sihasiha,老外都是能听懂的,就跟老外跟我们说中文,好吗你,你也会看成你好吗,一个道理,所以各位佬们不要害怕跟老外交流,没有想象的那么难 17 个帖子 - 15 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-31 04:57:05+08:00 · tech

之前如果分享AI生成的内容时,大多目标是给人类阅读的文字。 因此,我们可以以截图的方式发布,这样有利于避免论坛被AI内容污染。 但是,最近分享和整理内容的时候遇到了新的矛盾。有些内容就不是给人看的, 比如:提示词。比如AI生成的代码或者脚本。 当然我也想到了可以分享附件,但是首先我不确定这是否符合规定。 其次,我感觉这样依然有些…奇怪。 我提议:是否可以在编辑器规定某种语法,通过为论坛增加功能的方式。 比如将AI生成的内容包裹起来,然后展示时,自动以渲染为图片的方式展示。 如果用户需要这段文字,点击这张图片,可以在弹出的窗口复制文字的内容。 这样还有个好处,就是避免以截图的方式发布,会比例不一。 而且能适配黑白模式。 仅仅是一个建议,而且是一个有一定成本的建议。 14 个帖子 - 5 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-05-28 11:50:23+08:00 · tech

在写之前首先说明,java的冗长一般是两方面造成的。 1 是他语言本身,这个是本文要说的,在最近几年的一系列版本更新中已经改善了不少,这也是本文要说的。 2 是用法相关,古早的框架需要写一堆模板代码,臭名昭著的写个service还要先写个IService,接口一大堆。但这是古早框架相关,这也导致很多新手接手公司旧项目就被糊一脸,历史屎堆噩梦了属于是。现代的sb之类可以很简化,这个就不在本文讨论范围内了。 语言本身,java平台的各类其他语言,比如scala,kotlin等都比java语法简洁,近几年的java也在吃进一些他们的语法/概念,java总体还是更往函数式上走的。 record java的POJO之前写起来太麻烦了,getter,setter还要覆盖hashCode equals等。 很早lombok的 @Data 就能简化,java也引入了record再进一步。(不过record不可变,不一定所有场景都满足) 之前的POJO: 现在的写法: 有些场景需要在方法里定义一些临时用来运算的结构,之前偷懒不想定义一个class可能就用Map放了,类型不安全加很冗长,后面函数式的库起来了比如Jool/vavr,可以用tuple放临时结构。 java的record也可以临时定义。 之前: 临时定义record: 模式匹配 这东西是新语言标配了,最近的语言都有这个,表达力max,java也一样引入了,但是java的结构能力肯定是没法和其他一些语言比的,这个特性还在不断迭代。 对比 老的写法: 新的: 因为java之前不带sum类型,在模式匹配里无法使用编译器检查所有情况,所以后面出了个比较难看的密封类。(相较于其他语言可以直接用case或者|等语法定义)。但是好歹还是有sum类型了不是吗。 和其他的比是真的挺丑的。。 (注意 ts默认的是union type(也就是无标签) 这里给他写了个kind来模拟sum type) 连续(级联)空判断 其实就是引入了Optional这个类,语法上没变化,主要是API。 之前: 现在: 这个optional其实设计有问题。。。 map感觉设计错了 众所周知map是用来 O(x) → O(y)的 map里如果返回null应该是Optional.value(null) 他直接变成了Optional.empty(这个工作应该交给flatMap才对) 让AI来解释下: 不可变集合创建优化 这个同样是API层面,但是写起来就舒畅好多了。 新的: 字符串模板 这东西真是奇了怪了。。。现在还是个预览特性,需要打开开关才能用。 基本是新语言标配功能。没有之前用的apache lang包下的strsubstitutor,也能简化拼接。 (text block本身早就release了) 虚拟线程 结构化并发 这个解决了java一直以来的本地线程开销大(主要是内存开销 以及大量唤醒时的切换开销),之前重IO任务,你要么精心设计线程池,要么混合用reactive(这个会污染API),写起来都不那么顺手。 其他新语言倾向于async/await来简化,但是java直接在虚拟机层面引入虚拟线程,在不改变语法情况下实现重IO任务的优化。 让AI总结下: (当然要更高性能还是得上reactive混搭) (CPU密集任务还是推荐本地线程跑,这个和async/await一个道理,没法yield了) 结构化并发更是将之前的多线程任务可以以更可控的方式实现,但是这特性还是preview。。。还不能直接用。 其他还有零零散散的。 但是趋势是java不断向kotlin和scala等JVM平台的其他语言靠近。 所以说java语法冗长,在最近的版本里其实已经改进很多了,当然焊死java8的话…就挺难了(建议把jool/vavr引入 多吃点函数式,虽然这俩东西也很久没更新了) 21 个帖子 - 12 位参与者 阅读完整话题

v2ex · 2026-05-25 10:49:39+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 10:49:39+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 10:42:10+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 09:58:19+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 09:47:30+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-25 09:26:56+08:00 · tech

后悔药 Rue.js 玩了都年前端,捣鼓了很长一段时间的项目,好玩。 Rue.js (发音 /ruː/,中文名后悔药.js )是一个面向 JSX/TSX 的轻量前端框架,追求简单直观的开发体验,同时提供默认 Block / Vapor 渲染路径、路由、基于 Rust / WebAssembly 的运行时扩展,以及 Rust 实现的响应式系统与原生 DOM 编译能力。 它适合希望保留 React 风格 JSX 开发方式,同时获得 Vue 式响应式 API 与更贴近真实 DOM 更新模型的项目。 相关链接 https://github.com/hunzhiwange/ruejs https://ruejs.huododo.com/ 特性 轻量、直观的 API ,适合渐进式接入 默认 Block / Vapor 渲染路径,围绕真实 DOM 做最小更新 JSX / TSX 一等支持,无需额外模板语法 类似 Vue 的响应式 API ,支持 ref 、 reactive 、 computed 提供基于 Rust / WebAssembly 的运行时,可扩展 Vapor 渲染能力 提供 Rust 实现的响应式系统,覆盖信号、依赖追踪与调度能力 提供 Rust / Wasm 原生 DOM 编译器,将 JSX 转换为更贴近真实 DOM 的产物 官方路由、设计组件库与构建插件协同工作 提供 @rue-js/runtime-vapor 与 @rue-js/swc-plugin-rue Rust 侧核心能力 快速开始 Rue 提供官方脚手架,也支持接入现有 Vite 项目。 创建新项目 前置条件:Node.js >= 22.12.0 pnpm create rue@latest npm create rue@latest bun create rue@latest yarn dlx create-rue@latest 进入项目后安装依赖并启动开发服务器: cd your-project-name pnpm install pnpm run dev 接入现有项目 pnpm add @rue-js/rue @rue-js/router 在 Vite 配置中启用 Rue 的 JSX: // vite.config.tsimport { defineConfig } from 'vite' export default defineConfig({esbuild: { jsxImportSource: '@rue-js/rue' },}) 示例 下面是一个最小 Rue 应用示例: import { type FC, ref, useApp, useError } from '@rue-js/rue' const Counter: FC = () => {const count = ref(0) return <button onClick={() => count.value++}>点击次数:{count.value}</button>} useError({ overlay: true, console: true })useApp(Counter).mount('#app') 如果你需要页面级路由,可以继续接入 @rue-js/router : import { useComponent } from '@rue-js/rue'import { createRouter } from '@rue-js/router' export default createRouter({history: 'hash',routes: [ { path: '/', component: useComponent(() => import('./pages/Home')) }, { path: '/about', component: useComponent(() => import('./pages/About')) },],})

v2ex · 2026-05-22 20:09:55+08:00 · tech

我记得原来表格分隔线至少要三个 - ,原来写文档的时候还特意试过,最少几个就能识别。 https://www.markdownguide.org/extended-syntax/#tables https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables 今天发现现在一个就可以了。 | a | b | c | d | | --- | :--- | :---: | ---: | | a | b | c | d | | - | :- | :-: | -: | a b c d a b c d 貌似这里不支持对齐。 a b c d a b c d

LinuxDo 最新话题 · 2026-05-20 11:57:11+08:00 · tech

苹果计划在 iOS 27 和 iPadOS 27 中加入多项 AI 功能,包括类似 Grammarly 的系统级语法检查器、用自然语言描述即可自动生成 Shortcuts 快捷指令,以及由 Image Playground 驱动的 AI 壁纸生成。这些功能预计在下月 WWDC 公布,9 月向公众推送。 苹果正加紧追赶三星和谷歌在消费级 AI 上的步伐。上周谷歌刚发布 Android 17 及 Gemini Intelligence 新功能,而苹果此次更新也将配合 Siri 改版和照片 AI 编辑工具同步推出。 https://www.bloomberg.com/news/articles/2026-05-18/apple-ios-27-ai-writing-grammar-help-new-shortcuts-app-custom-wallpapers 2 个帖子 - 2 位参与者 阅读完整话题