Skip to content

Instantly share code, notes, and snippets.

View shiehnpin's full-sized avatar
😄

EnPing shiehnpin

😄
View GitHub Profile
//Top-level
class Args(val key: String) {
inline operator fun <reified T> getValue(thisRef: Fragment, property: KProperty<*>): T {
return checkNotNull(thisRef.arguments).get(key) as T
}
}
//Usage
fragment.arguments = Bundle().apply {
import kotlin.reflect.KProperty
class Example {
// var p: String by Delegate()
override fun toString() = "Example Class"
}
class Example2 {
val p :String? by Delegate()
想做的事情是 "API callback"的統一處理,外部傳入的Callback型態可能跟Retrofit的不同或是相同
做一個Wrapper,可以自己判斷若相同型態時就直接pass by, 若不同則使用外部傳入的transformer
private inline fun <reified T, reified R> wrap(noinline successListener: (Int, R) -> Unit,
noinline failureListener:(error: Throwable)->Unit,
noinline transformer:((T?)->R)? = null):Callback<T>{
return BaseResponseWrapper(successListener,failureListener){t: T? ->
return@BaseResponseWrapper if(transformer!=null) transformer(t) else defaultTransformer(t)
<iframe src="https://drive.google.com/file/d/1JhYDR2xW5wVafjphQobVlPbL9ts_Yo-G/preview" width="640" height="480"></iframe>
.map { name -> Timber.d("1 $name" +Thread.interrupted());
Thread.sleep(1000);
Timber.d("1- $name" +Thread.interrupted());name
}
.map { name -> Timber.d("2 $name" +Thread.interrupted());
Thread.sleep(1000);
Timber.d("2- $name" +Thread.interrupted());name }
android {
...
buildTypes {
...
debug{
multiDexEnabled true
}
Logger.d("BUG", "Death!!")
when(try{ null } catch (e:Exception) { -1 }){
in 0..Int.MAX_VALUE -> 1
else -> -1
}
BST::TreeNode::TreeNode(const int& v):data(v){};
//Driver
void BST::insert(const int& val){
insert(val,root);
print();
}
//Workhorse
void BST::insert(const int& val, BST::TreeNode* &node){
//Workhorse
BST::TreeNode* BST::minElement(const int& threshold, BST::TreeNode* &node){
if(node == NULL){
return NULL;
}
if(node->sum < threshold){
public class TestVolatile {
volatile private boolean v = true;
private boolean n = true;
void invokeLoop(final boolean isVolatile){
Thread t = new Thread(){
@Override
public void run(){
while(true){