请写一个 type inference ,正确判别以下表达式
toAST.run {
`+`(+1, +1)
`+`(+"Hi", +"World")
say(+"Good"); say(Str)
}
toAST.runCatching {
`+`(+1, +"World")
#!ipy -i | |
def cat(): | |
x=yield '1st' | |
while True: | |
x=yield x | |
z=cat(); next(z) #x=() 待执行 | |
[z.send(n) for n in range(10)] | |
''' |
#include<bits/stdc++.h> | |
#define let auto | |
#define inc(A,B,i) for(let i=A;i<=B;i++) | |
#define NO NULL | |
#define _(T,meth, ...) T##_##meth(__VA_ARGS__) | |
#define Col(...) typedef struct{__VA_ARGS__;} T; | |
#define T Str |
N2=(x,y=x)=>new _N2(new Float32Array(2),x,y) | |
data=(kv,T)=>{ | |
let s=(T+''), sub=(s,f)=>s.replace(/(\w+)/g,f), kvs=kv.split(','), cg='', | |
vec=(k,v)=>`${k.substr(1)}(v){let a=this._,i=${kvs.length-1};while(i-->0)a[i]${k[0]}=${v}; return this}` | |
if(kvs[0]=='_') { | |
'+p *pp -m /mm'.split(' ').forEach(k=> cg+=vec(k,'v')+'_'+vec(k,'v._[i]')) | |
kvs.slice(1).forEach((k,i)=> cg+=`get ${k}(){return this._[${i}]}set ${k}(v){this._[${i}]=v}`) | |
} | |
T=eval(sub(s,(m,k)=>kvs.includes(k)?`this.${k}`:k).replace('{\n',`{constructor(${kv}){${sub(kv, `this.$1=$1`)}}`+cg))(); this[T.name]=T |
#!/bin/env bash | |
#kotlinc -include-runtime catdo.kt -d ~/catdo.jar; install -Dm755 -t ~ catdo | |
catdo() { local k=$1;set -- "$PWD0" "${@:2}"; printf "%s\0" "$@" >buf; printf "%08x" $(wc -c <buf)|basenc --base16 -d >>$k; cat buf>>$k | |
ruby -e 'k,bf=ARGV; while File.read(bf)!=k do end' $k buf; cat $k | |
} | |
[ -z $2 ] &&env JAVACMD=$PWD/catdo $1 &&exit | |
j=$(echo "$@"|sed -E 's/(\S*Main)/CatdoKt \1/;s/-cp /\0catdo.jar:/') | |
read f fl <<<$(sed -E 's/.* (\S*Main)(.*)/\1.text \2/'<<<$j) |
请写一个 type inference ,正确判别以下表达式
toAST.run {
`+`(+1, +1)
`+`(+"Hi", +"World")
say(+"Good"); say(Str)
}
toAST.runCatching {
`+`(+1, +"World")
请写一个 type inference ,正确判别以下表达式
toAST.run {
`+`(+1, +1)
`+`(+"Hi", +"World")
say(+"Good"); say(Str)
}
toAST.runCatching {
`+`(+1, +"World")
import jdk.jshell.JShell | |
import jdk.jshell.spi.* | |
import java.lang.reflect.* | |
import kotlin.reflect.KClass | |
import kotlin.reflect.full.memberProperties | |
//dumps(Pair::class) (Pair(0,0), mutableMapOf("first" to 3)) | |
fun dumps(T:KClass<*>, ld:T=JS("(void)(${T} o, java.util.Map<String,Object> m){"+ | |
T.memberProperties.joinToString(""){" m.put(\"${it.name}\",o.get${it.name.capitalize()}());"}+"}")!! |
# 用 pyQt 框选获取屏幕截图,PIL.ImageGrab.grab() 可以获取全屏图,继续,继续capture和鼠标 | |
#xy可以换成两个QPoint | |
#请用PyGTK兼容 linux 上的 PIL grabclipboard() | |
import gi; gi.require_version("Gtk", "3.0") | |
from gi.repository import Gtk, Gdk | |
gi.overrides.GdkPixbuf.Pixbuf.toPIL=lambda g: PIL.Image.frombuffer("RGBA",(g.get_width(),g.get_height()),g.get_pixels() ) | |
cc=Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) |
from ipywidgets import interact | |
import ipywidgets as widgets | |
from lib2to3.refactor import RefactoringTool,get_all_fix_names as lsFix | |
import ast,astor,pickle | |
@interact | |
def convert(code=widgets.Textarea(value="map({it+1},[0])|{[*it]}, 1|{it+1}", description='Input Code'), fixes=widgets.SelectMultiple(options=lsFix('lib2to3.fixes'), description='Fixes')): | |
if not fixes: | |
tree = ast.parse(code) | |
# 使用自定义的访问器类遍历并修改语法树 |