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 的心态,让用户不需要花费太多精力在"了解怎么用上"。
这一点只有个人开发者鸽子掉的项目能比得上
这一点只有个人开发者鸽子掉的项目能比得上
Forwarded from &'a ::rynco::UntitledChannel (Rynco Maekawa)
Twitter
星咲高校地学部航天局 HGCSA
BREAKING: The first Chinese Mars rover is likely to be named Perseverance
https://t.me/AndroidDevCn/180426 内容查询器…… 好麻烦的样子
#db SQL select(projection),where,sort 都有了(还有参数 bind...)
uri=content://media/external/file
projection=[_data, orientation, title, duration, bucket_display_name]
selection=((media_type = 1 OR media_type = 3) AND (bucket_id IS NOT NULL) AND (generation_modified > ?)), selectionArgs=[1]
sortOrder=generation_modified DESC, _id DESC #db SQL select(projection),where,sort 都有了(还有参数 bind...)
Telegram
Rikka in [CN] Android Dev
先查 BUCKET_DISPLAY_NAME + BUCKET_ID
然后手动...
比一下子拿所有的可能快那么一点点 吧(
然后手动...
比一下子拿所有的可能快那么一点点 吧(
duangsuse::Echo
#ali #android 🤔支付宝好像能监听到收款码页的 音量下键截屏 ,不知道是有咕咕截屏审查 API 还是按键事件
给 Android 的 Window 加上这个 FLAG 可以告知系统该窗口含有私密内容,部分系统的实现就是禁止截屏和任务窗口里面的预览:https://developer.android.com/reference/android/view/Display#FLAG_SECURE
Forwarded from dnaugsuz
https://github.com/duangsuse-valid-projects/MinBase64 很久以前的,静态 View 单页,你可以看看
Java 新手要注意三点:
1. 不要滥用 public ,尽可能隐藏构造细节是为了便于突出重点(但如果是为了方便免写getset 则要注意排版整齐靠前)。以后写复用库如果还这么搞,不兼容修改会被人打的
不要滥用 try-catch ,确保不可能抛异常用
2.
- 算符++先后的区别是, (i++)==old_i 而 (++i)==i/*=(old_i+1)*/ ,不要相信它能“优化性能”
-
- 表达式
-
-
3. 实现软件特性,代码能简则简,网上看很酷的 trick 体验一次就够了,下个版本删了换直白的等效代码。
Java 新手要注意三点:
1. 不要滥用 public ,尽可能隐藏构造细节是为了便于突出重点(但如果是为了方便免写getset 则要注意排版整齐靠前)。
不要滥用 try-catch ,确保不可能抛异常用
catch (Exception _) {} ,可以添加 void opt() throws EXC 和 Thread.setDefaultUncaughtExceptionHandler((EXC ex) -> {}); 取代过多 catch2.
- 算符++先后的区别是, (i++)==old_i 而 (++i)==i/*=(old_i+1)*/ ,不要相信它能“优化性能”
-
@Override 都能删掉,但为明确性不应该删,继续熟悉真实的语法结构吧- 表达式
new XListener() { public void onX() } 是创建了 XListener 的一个「匿名内部类(anonymoud subclass)」实例,之所以不能只换构造参数 是因为它方法的逻辑与既有类不一致,新 Java 8 往往用 lambda (() -
> {}) 替换。-
static 的意思是「该成员(字段/getset属性/方法)与类本身 1:1 相关」-
static class 只有在 class{} 里面才该用。3. 实现软件特性,代码能简则简,网上看很酷的 trick 体验一次就够了,下个版本删了换直白的等效代码。
GitHub
duangsuse-valid-projects/MinBase64
最小化的base64编解码器(大雾),使用android.util.Base64完成底层操作(将来会加入基于Rust语言编解码器支持) - duangsuse-valid-projects/MinBase64
dnaugsuz
https://github.com/duangsuse-valid-projects/MinBase64 很久以前的,静态 View 单页,你可以看看 Java 新手要注意三点: 1. 不要滥用 public ,尽可能隐藏构造细节是为了便于突出重点(但如果是为了方便免写getset 则要注意排版整齐靠前)。以后写复用库如果还这么搞,不兼容修改会被人打的 不要滥用 try-catch ,确保不可能抛异常用 catch (Exception _) {} ,可以添加 void opt() throws EXC…
duangsuse::Echo
#ali #android 🤔支付宝好像能监听到收款码页的 音量下键截屏 ,不知道是有咕咕截屏审查 API 还是按键事件
wjm:
截屏还有另一个方法:看相册
那些个截屏就蹦出来个反馈的就差不多是这样的
检测到新媒体(相片)
duangsuse:
草 突破盲点了
截屏还有另一个方法:看相册
那些个截屏就蹦出来个反馈的就差不多是这样的
检测到新媒体(相片)
duangsuse:
草 突破盲点了