Forwarded from IT之家 RSS
Forwarded from Soha 的日常 (Soha Jin)
“他解释道,微信不保存聊天记录,微信也规定谁看了用户的聊天记录会被开除的。”
不保存聊天记录的话,你员工又怎么会因为看了聊天记录被开除呢🌚?
https://www.ithome.com/0/530/992.htm
不保存聊天记录的话,你员工又怎么会因为看了聊天记录被开除呢🌚?
https://www.ithome.com/0/530/992.htm
Ithome
张小龙:为了保护隐私,微信不久后将推出属于自己的输入法 - IT之家
在今天的 2021 微信公开课 Pro 版的微信之夜上,腾讯高级副总裁,微信事业群总裁张小龙透露,微信即将有自己的输入法,会在不久之后灰度测试。此外,微信浮窗也会有所更新。
Forwarded from RSSBot
Kotlin Programming Language by JetBrains – Kotlin Blog | JetBrains
Results of the First Kotlin Multiplatform Survey
Results of the First Kotlin Multiplatform Survey
Forwarded from dnaugsuz
from subprocess import check_call
from os import path
from operator import gt
def ffmpeg(src, dst, *args):
if path.exists(dst) and gt(*map(path.getmtime, [dst,src])): return
check_call(["ffmpeg","-i",src,*args,dst])
return dst是阻塞的,这样可以再 open() 输出(之前Java写过)
Gist
Linux Terminal has the capability of displaying 8-bit colour, so why not play something on it?
Linux Terminal has the capability of displaying 8-bit colour, so why not play something on it? - JPlayer.java
Forwarded from VOT SWRING
这个问题可以加interface解决,但final的类和inline extension就无解了
Forwarded from VOT SWRING
其实在上一级class或者interface里面写extension fun已经达到了这种(A, B).(C)->D的效果,现在缺少正式的语法
Forwarded from dnaugsuz
fun (String|Int).getStringLength(): Int 即:
(A,B).() -> Int是啊,直接在共同超类定义就好
为什么要引入这种... 找不自在吗
Forwarded from dnaugsuz
fun (View, Float).dp() = this * resources.displayMetrics.density // explicitly:
fun (View, Float).dp() = this@Float * this@View.resources.displayMetrics.density class SomeView : View { val someDimension = 4f.dp() }感觉这个人有点不了解 Kotlin 的
super<A>.wtf 是尖括号而不是 label 语法…… 不止是有点 alien, 这是什么鬼概念啊resources.displayMetrics.density 在 Float 上不存在,是不是此 fun 在 Float 依然有效…… 还是说隐式 View 上下文?引入隐式性可不是一件小事情,那么确定没有其它解法吗?
Forwarded from dnaugsuz
with(dispatchReceiver) { extensionReceiver.doSomething(params) } 果然他们还是要搞隐式参数啊…… 但这个语法其实未必非要 ext-fun 接受“另一个 receiver(this)” ,写成 fun Float.dp(dim:Float) = this*dim 再 interface View { fun Float.dp()=/**/ } 也可以啊(不过要加的话这个用途还是窄,但也可以只加 class 内部 ext fun 的那个支持,但我很想喷他“为 logger 优化”的那个,是没学过面向对象吗)Forwarded from dnaugsuz
也算好吧, scoped extension 能加到 scope 的外面去,解决了语法只能指定 receiver 的缺陷
Forwarded from dnaugsuz
这个高级特性是,你
可以
等于有
它不解释我还以为有
语法可能最后还是会改下
interface XScope { val rate: Int; fun Int.wtf()=this*this@XScope.rate }
class X(override val rate: Int): XScope 可以
X(2).run { 1.wtf() } == 2等于有
fun (X/*下的*/,Int).wtf() = this*rate 它不解释我还以为有
fun X.wtf(): Int 呢语法可能最后还是会改下
dnaugsuz
这个高级特性是,你 interface XScope { val rate: Int; fun Int.wtf()=this*this@XScope.rate } class X(override val rate: Int): XScope 可以 X(2).run { 1.wtf() } == 2 等于有 fun (X/*下的*/,Int).wtf() = this*rate 它不解释我还以为有 fun X.wtf(): Int 呢 语法可能最后还是会改下
积极思考了一下, 绝句 里此特性能否支持。
首先这是扩展成员(extension) 查找的问题,实现不难但要增加一个case,修改二进制内子格式(作用域混入的 2*thisArg)
就目前的语法,它肯定要改。 我看到 ((A,B).() -> R) 的函数类型就误会为 (A,B)=(A|B) 了
最开始是说
后来觉得, implict
我觉得虽然有点简短 (可以用 其中 但我觉得无意义),实际写起来也容易理解
既有的 隐式 关键字好像没有用,因为它只能隐式构造器和数据类参数
首先这是扩展成员(extension) 查找的问题,实现不难但要增加一个case,修改二进制内子格式(作用域混入的 2*thisArg)
就目前的语法,它肯定要改。 我看到 ((A,B).() -> R) 的函数类型就误会为 (A,B)=(A|B) 了
最开始是说
fun B.opt(): R in A (有点 Kotlin 化,in 也有前移可能)后来觉得, implict
this 的冲突应该提上改革点,正好绝句「人称文法」的第二人称代表 作用域混入 ,就 事 B.opt():R 你 A = op(我、你的x) 这样也行我觉得虽然有点简短 (可以用 其中 但我觉得无意义),实际写起来也容易理解
既有的 隐式 关键字好像没有用,因为它只能隐式构造器和数据类参数
Forwarded from duangsuse Throws
Forwarded from AlPlank (Al Pt)
wechat 唯一一点好就是相对其他软件能稍微管住自己加 feature 的心态,让用户不需要花费太多精力在"了解怎么用上"。
这一点只有个人开发者鸽子掉的项目能比得上
这一点只有个人开发者鸽子掉的项目能比得上