精华内容
下载资源
问答
  • Symbol

    2018-11-22 11:52:40
    Symbol简介 Symbol是es6的新的数据类型,表示唯一,独一无二的 声明方式 let s =Symbol() 加入参数 let s=Symbol('single'); let s1=Symbol('single'); console.log(s === s1); // 返回值为false 实用方法 当我们...

    Symbol简介

    Symbol是es6的新的数据类型,表示唯一,独一无二的

    声明方式
    let s =Symbol()
    
    加入参数
    let s=Symbol('single');
    let s1=Symbol('single');
    console.log(s === s1);
    
    // 返回值为false
    
    实用方法

    当我们期望值不被改变,使用Symbol

    let Person=(function(){
      let _sex=Symbol('sex');
      function P(name,sex){
         this.name=name;
         this[_sex]=sex;
      }
      P.prototype.say=function(){
         console.log(this[_sex])
      }
      renturn P
    })()
    let p1=new Person('展昭','男')
    console.log(p1)
    // 可以看到p1输出为{name:'展昭',Symbol('_sex'):'男'}
    // 在此处无法对p1进行修改。
    
    
    展开全文
  • Cannot resolve symbol ‘Theme’ in styles.xml (Android Studio) Failed to load AppCompat ActionBar with unknown error. 经过 一番苦战,终于找到了解决方案。 故障分析: 当更新到...

    最近更新了Android Studio 到最新版本3.1.4,但是却出现了一个问题,

    Cannot resolve symbol ‘Theme’ in styles.xml (Android Studio)
    Failed to load AppCompat ActionBar with unknown error.
    Cannot resolve symbol ‘OkhttpUtils’

    有时候会出现类似theme主题找不到,甚至AppCompatActivity 这个类也找不到,

    更严重有时候引入的所有Github 上的类库都找不到了,都快要吐血崩溃了。

    好在经过 一番苦战,终于摸清楚了脾气,找到了终极解决方案。

    终极解决方案:

    1.哪个Jar包有问题就把该配置注释掉,比如下面这个:

    dependencies { 
        //implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
        //implementation 'com.android.support:design:28.0.0-alpha3'
        //implementation 'com.android.support:support-v4:28.0.0-alpha3'
        //implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
    }
    

    2.点击Sync Now
    这里写图片描述
    3.然后解开注释

    dependencies { 
        implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
        implementation 'com.android.support:design:28.0.0-alpha3'
        implementation 'com.android.support:support-v4:28.0.0-alpha3'
       implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
    }
    

    4.再点击Sync Now
    这里写图片描述
    好吧有人说这个按钮找不到,我贴个图吧
    在这里插入图片描述
    再补一张动图
    在这里插入图片描述
    5.问题解决.世界安好


    其他解决方案一:

    这里写图片描述

    这里写图片描述

    其他解决方案二:

    这里写图片描述

    其他解决方案三:

    这里写图片描述
    解决方案,修改版本

     implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    

     implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
    

    完整修改build.gradle内容如下:

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        implementation 'com.android.support:design:28.0.0-alpha1'
        implementation 'com.android.support:support-v4:28.0.0-alpha1'
        implementation 'com.android.support:recyclerview-v7:28.0.0-alpha1'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    }
    

    参考地址:After Updating Android studio to 3.1.2 , I get “Failed to load AppCompat ActionBar with unknown error. ”

    其他解决方案四:

    也有可能是jar包因为网络原因没下载更新好。。。
    删除这个文件夹下的所有jar,或者找到没识别的jar删除再重新下载
    /Users/(用户名)/.gradle/

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.4'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
            maven { url 'https://jitpack.io' }
        }
    }
    

    其他解决方案五:

    1.哪个Jar包有问题就把该配置注释掉,比如下面这个:

    dependencies { 
        //implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
        //implementation 'com.android.support:design:28.0.0-alpha3'
        //implementation 'com.android.support:support-v4:28.0.0-alpha3'
        //implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
    }
    

    2.点击Sync Now
    这里写图片描述
    3.然后解开注释

    dependencies { 
        implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
        implementation 'com.android.support:design:28.0.0-alpha3'
        implementation 'com.android.support:support-v4:28.0.0-alpha3'
       implementation 'com.android.support:recyclerview-v7:28.0.0-alpha3'
    }
    

    4.再点击Sync Now
    这里写图片描述
    5.问题解决.世界安好

    展开全文
  • ES6个人笔记记录——Symbol

    万次阅读 2020-05-08 13:30:59
    ES5 的对象属性名都是字符串,这容易造成属性名的冲突 ...ES6引入了一种新的原始数据类型Symbol,表示独一无二的值 是第七种数据类型 1.Number 2.String 3.Undefined 4.Null 5.Boolean 6.Object Symbol...
    ES5 的对象属性名都是字符串,这容易造成属性名的冲突
    比如,我们使用了一个他人提供的对象,
    但又想为这个对象添加新的方法Cmixin 模式〉,
    新方法的名字就有可能与现有方法产生冲突。 
    
    ES6引入了一种新的原始数据类型Symbol,表示独一无二的值
    是第七种数据类型
    1.Number
    2.String
    3.Undefined
    4.Null
    5.Boolean
    6.Object
    
    Symbol值是通过Symbol函数生成,
    只要属性名属于Symbol类型,就是独一无二的,
    可以保证不会与其他属性名冲突
    
    let s1 = Symbol();
    console.log(typeof s1);
    
    PS:Symbol函数不能使用new命令,
    	因为生成的Symbol是一个原始类型的值,不是对象
    	就是说Symbol不是对象,所以不能添加属性
    	基本上,他是一种类似于字符串的数据类型
    
    // Symbol添加参数,便于区分
    let s2 = Symbol('foo');
    let s3 = Symbol('bar');
    
    console.log(s2,s3);
    
    // eg1
    let mySymbol = Symbol();
    let mySymbol2 = Symbol();
    let mySymbol3 = Symbol();
    
    // 第一种写法
    let a = {};
    a = {
    	[mySymbol2] : 'world'
    }
    
    // 第二种写法
    a[mySymbol] = 'hello';
    
    // 第三种写法	不太行
    Object.defineProperty(a,mySymbol3,{value : 'wjy'});
    
    console.log(a)
    

    Symbol类型还可以用于定义一组变量,保证这组变量的值都不相等

    /*
    log.levels = {
    	DEBUG : Symbol('debug'),
    	INFO : Symbol('info'),
    	WARN : Symbol('warn')
    };
    log(log.levels.DEBUG,'debug message');
    */
    
    // 例子:消除魔术字符串
    function getArea(shape,options){
    	let area = 0;
    
    	switch(shape){
    		case 'Triangle': 	//魔术字符串
    			area = .5 * options.width * options.height;
    			break;
    		default:
    			area = "false";
    			break;
    	}
    	return area;
    }
    

    强耦合

    console.log(getArea('Triangle',{width : 100,height : 200}));
    
    // change
    function getAreaChange(shape,options){
    	let area = 0;
    	let { PI } = Math;
    	switch(shape){
    		case shapeType.triangle:
    			area = .5 * options.width * options.height;
    			break;
    		case shapeType.circle:
    			area = PI * options.radius ** 2;
    			break;
    		default:
    			area = "false";
    			break;
    	}
    	return area;
    }
    
    let shapeType = {
    	// triangle : 'Triangle'
    	/*
    		经过分析可知,shapeType.triangle等于哪个值不重要
    		只要确保不会和其他shapeType属性的值冲突即可
    	 */
    	triangle : Symbol(),
    	circle : Symbol()
    };
    
    console.log(getAreaChange(shapeType.triangle,{ width : 200, height : 3}));
    console.log(getAreaChange(shapeType.circle,{ radius : 2 }));
    

    属性名的遍历

    let {  getOwnPropertyNames , getOwnPropertySymbols , defineProperty } = Object;
    let objectSymbols1 = getOwnPropertySymbols(a);
    console.log(objectSymbols1)
    
    // another example
    let obj3 = {};
    let foo3 = Symbol("foo");
    defineProperty(obj3,foo3,{
    	value : "foobar",
    });
    
    for(let i in obj3){
    	console.log(i);		//无输出
    }
    
    使用getOwnPropertyNames方法得不到Symbol属性名
    需要使用getOwnPropertySymbols方法
    
    console.log(getOwnPropertyNames(obj3));
    console.log(getOwnPropertySymbols(obj3));
    
    可以使用Reflect.ownKeys()方法返回所有类型的键名
    包括常规键名和Symbol键名
    
    const { ownKeys } = Reflect;
    
    let obj4 = {
    	[Symbol('my_key')]: 1,
    	enum : 2,
    	nonEnum : 3
    };
    
    console.log(ownKeys(obj4));
    
    以Symbol值作为名称的属性不会被常规方法遍历得到。
    我们可以利用这个特性为对象定义些非私有但又希望只用于内部的方法。
    
    let size = Symbol('size');
    
    class Collection{
    	constructor(){
    		this[size] = 0;
    	}
    
    	add(item){
    		this[this[size]] = item;
    		this[size]++;
    	}
    
    	static sizeOf(instance){
    		return instance[size];
    	}
    }
    
    let x = new Collection();
    console.log(Collection.sizeOf(x));
    x.add('foo');
    console.log(Collection.sizeOf(x))
    
    const { keys , getOwnPropertySymbols , getOwnPropertyNames } = Object;
    console.log(keys(x),getOwnPropertyNames(x),getOwnPropertySymbols(x));
    
    展开全文
  • SymbolSymbol属性

    2019-06-19 17:52:43
    SymbolSymbol属性 Symbol: 符号 ESMAScript6: 原始数据类型:字符串、数字型、布尔型、null、undefined 以及 Symbol 创建 Symbol: 所有原始值除了Symbol都有各自的字面量形式,例如 布尔类型的 true ...
     Symbol 和 Symbol属性
           Symbol: 符号
    
           ESMAScript6:
    
              原始数据类型:字符串、数字型、布尔型、null、undefined 以及 Symbol
    
           创建 Symbol:
             所有原始值除了Symbol都有各自的字面量形式,例如 布尔类型的 true
    
            let firstName = Symbol();
            let person = {};
            person[firstName] = "song"
            console.log(person[firstName]);
    
            // 创建时添加一个描述信息,描述文字不可以访问
            let name = Symbol("desc info");
            console.log("desc info" in person); // false
    
            // Symbol的辨识方法
            console.log(typeof firstName); // symbol
    
            // Symbol的使用方法
    
            // 使用一个可计算对象字面量属性
            person = {
                [firstName] : "Apple"
            };
    
            // 将属性设置为可读
            Object.defineProperty(person, firstName, {writable: false});
    
            let lastName = Symbol("egg");
    
            Object.defineProperties(person, {
                [lastName] : {
                    value : 'age',
                    writable: false
                }
            });
    
            console.log(person[firstName]); // Apple
            console.log(person[lastName]);  // egg
    
            // Symbol共享体系  有时候希望在不同的代码中共享同一个Symbol
    
            // 创建可共享的Symbol
            let uid = Symbol.for("uid");
    
            let obj = {};
            obj[uid] = "12345";
    
            console.log(obj[uid]); // 12345
            console.log(uid); // Symbol(uid)
    
            /*
            * Symbol.for("uid") 首先会在Symbol注册表中搜索键为 uid的Symbol是否存在
            *     如果存在:
            *         直接返回已有的Symbol
            *     如果不存在:
            *         创建一个新的Symbol并使用这个键在Symbol全局注册表中注册, 随机返回创建的Symbol
            * */
    
            let uid2 = Symbol.for("uid");
            console.log(uid == uid2); // true
            console.log(obj[uid2]);  // 1234
            console.log(uid2);  // Symbol(uid)
    
            // 可以使用 Symbol.keyFor() 方法在全局注册表中检索与Symbol有关的键
    
            console.log(Symbol.keyFor(uid)); // 返回 uid 的键
            console.log(Symbol.keyFor(uid2)); // 返回 uid 的键
            // console.log(Symbol.keyFor(uid3)); undefined
    
            // Symbol与类型强制转换, 不能将Symbol强制转换成字符串和数字类型
            let str = Symbol();
            // console.log(str + ""); Cannot convert a Symbol value to a string
            console.log(typeof Symbol.for("uid")); // symbol
    
            // Symbol属性检索
            /*
                检索对象的所有属性名
                Object.keys()
                Object.getOwnPropertyNames()
                Object.getOwnPropertySymbols()
            */
    
            let lab_id = Symbol();
            let json = {
                [lab_id] : 123
            };
            let keys = Object.getOwnPropertySymbols(json);
            console.log(keys.length);
            console.log(keys[0]); // Symbol
            console.log(json[keys[0]]); // 123

     

    展开全文
  • Symbol类型

    2020-06-23 14:33:27
    symbol是一种基本数据类型 (primitive data type)。每个从Symbol()返回的symbol值都是唯一的。 不支持语法:"new Symbol()":从 ECMAScript 6 开始不再被支持原始数据类型创建一个显式包装器对象。 然而,现有的...
  • es6 Symbol

    2019-05-16 17:13:17
    SymbolJavaScript中的数据类型Symbol用作属性名的 Symbol属性名的遍历getOwnPropertySymbols()Reflect.ownKeys()Symbol.for()Symbol.keyFor() JavaScript中的数据类型 String 字符串类型 Number 数字类型 Object ...
  • symbol lookup error:undefined symbol

    千次阅读 2019-09-30 04:49:11
    symbol lookup error:undefined symbol 通过一个实例,引入这个问题。特在此说明一下,搞清楚原因。 问题: 向设备移植openvas时遇到一个问题。 运行openvassd,报错,在此之前我已经将libgio-2.0.so.0库移植...
  • Symbol用法

    千次阅读 2018-02-06 16:21:53
    概念:定义一个独一无二的元素 ... let a1 = Symbol(); let a2 = Symbol(); console.log(a1===a2) //输出结果:false let a3 = Symbol.for('a3') let a4 = Symbol.for('a3') console.log(a3===a4) //输出结
  • 深入理解Symbol

    千次阅读 2019-11-30 23:02:55
    符号(Symbol)是日常开发中经常接触的一个概念,虽然日常开发中直接应用的场景比较少,但符号编译期和运行时都扮演了重要的角色。 符号是什么 维基百科的定义 A symbol in computer programming is a primitive data...
  • symbol类型

    2017-08-09 22:37:44
    为了从根本上防止对象中属性名的冲突,ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型。是一种类似于字符串的数据类型 let s = Symbol();typeof s // "symbol" ...
  • Symbol 函数

    千次阅读 2017-02-15 09:38:51
    Symbol :每次返回的都是一个新的值; 1.Symbol是ES6引进的一种新的原始数据类型,表示一种独一无二的值; 2.Symbol值通过Symbol函数来生成,这就是说,现在的属性值有两种类型: 2.1 一种是原有的字符串的值; ...
  • undefined symbol

    千次阅读 2018-08-22 08:58:16
    今天调试一个程序,需要调用其他模块的函数,代码就20行左右,编译也通过了,当放到机器上跑的时候,发生了crash,主要的原因是 **.so:undefined symbol: _ZN2wf7deta*(用*代替这个symbol),开始的时候用linux...
  • mxnet symbol 解析

    2020-02-19 01:02:52
    mxnet symbol类定义:https://github.com/apache/incubator-mxnet/blob/master/python/mxnet/symbol/symbol.py...class Symbol(SymbolBase): """Symbol is symbolic graph of the mxnet.""" # disable dictionary ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,634
精华内容 27,053
热门标签
关键字:

symbol