2704. To Be Or Not To Be

閱讀時間約 6 分鐘

問題

Write a function expect that helps developers test their code. It should take in any value val and return an object with the following two functions.

  • toBe(val) accepts another value and returns true if the two values === each other. If they are not equal, it should throw an error "Not Equal".
  • notToBe(val) accepts another value and returns true if the two values !== each other. If they are equal, it should throw an error "Equal".

 

Example 1:

Input: func = () => expect(5).toBe(5)
Output: {"value": true}
Explanation: 5 === 5 so this expression returns true.

Example 2:

Input: func = () => expect(5).toBe(null)
Output: {"error": "Not Equal"}
Explanation: 5 !== null so this expression throw the error "Not Equal".

Example 3:

Input: func = () => expect(5).notToBe(null)

Output: {"value": true}

Explanation: 5 !== null so this expression returns true.


解題思路

  1. 需要有一個 function,裡面有兩個小物件,兩個物件又要包含兩個 function toBe 跟 .notToBe
  2. toBe 是當兩個值嚴格相等的時候,返回 true ,否則返回一個錯誤 "Not Equal"
  3. notToBe 則是當兩個值不相等時,返回true如果兩個相等 則回傳錯誤 "Equal"

所以我們的第一步要先建立一個 function

function expect(value) {}

接著我們需要她回傳兩個不同的物件 toBe​ ​跟 notToBe,裡面要包含用以判斷是否相等(或不相等)的funtion,我們先來解決 tobe 的部分。

從範例上可以看到以下兩點

  • expect(5).toBe(5) 要輸出 {"value": true}
function expect(value) {
return {
toBe:function (expect) {
if (value === expected) {
return true; }
}
  • expect(5).toBe(null)要輸出{"error": "Not Equal"}

回傳錯誤的時候,我們要用 throw Error 這個語法

function expect(value) {
return {
toBe:function (expected) {
if (value === expected) {
return true;
}
throw Error('Not Equal');
},

​再來處理 notToBe 我們也如法泡製一次:

function expect(value) {
return {
toBe:function (expected) {
if (value === expected) {
return true;
}
throw Error('Not Equal');
},
notToBe:function (unexpected) {
if (value !== unexpected) {
return true;
}
throw Error('Equal');
}
};
}

接下來我們測試一下是否正確

raw-image

完成!

但其實,上面這個寫法是很醜的,我們仔細看一下題目 notToBe(val) 的部分:

notToBe(val) accepts another value and returns true if the two values !== each other. If they are equal, it should throw an error "Equal".

注意到了嗎,這題的錯誤是產生在他們相等的時候回傳的,但是在我們的 notToBe 裡,我們卻是在他不是 不是不相等的時候,才回傳這個錯誤,相對之下會比較不好讀。

notToBe:function (unexpected) {
if (value !== unexpected) {
return true;
}
throw Error('Equal');
}
};

所以我們改個寫法,變成「當他們相等的時候,直接回傳錯誤」

notToBe:function (unexpected) {
if (value === unexpected) {
throw Error('Equal')
}
return true;

為了讓程式看起來"對稱",我們也把 toBe ​修改一下:

function expect(value) {
return {
toBe:function (expected) {
if (value !== expected) {
throw Error('Not Equal');
}
return true;
},


    0會員
    5內容數
    留言0
    查看全部
    發表第一個留言支持創作者!
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
    Thumbnail
    Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
    Thumbnail
    傷了三年,調整體質 檢視一下漲很多的觀光股 有些是真的營收變好嗎? 如下圖,國賓近期營收算是普通,2020年到2022年的本業營業利益為負數,2022年主要是靠賣高雄國賓的股權,使得業外有一筆可觀的收入。 因為疫情的關係,國賓也是營收傷很大,營業利益均為負數,暫時靠業外獲利貼補一下;老飯店吸引力比較
    Thumbnail
    本文將帶您了解最近一週(03/27-04/02)的美股時事,包含市場概況、美股動態和下週關注等方面,讓您能掌握最新的投資資訊。
    Thumbnail
    近日最重大消息是,台灣從基隆一路到高雄、台東發現十六具無名屍,初估只發現五名台灣人、兩名越南籍。根據最新報導指出,檢警在一具浮屍身上,找到一張台商的名片,並透過上面資訊順利聯絡上該名台商,並在台商的協助下,聯繫上其中一位死者家屬。經家屬透露,死者是為了偷渡來台灣,所以才登上漁船......
    這陣子學習網路行銷的小小感覺 感覺就是…每天都要做一樣的事情 雖說網路行銷聽起來應該很有趣吧(至少在我學之前,印象是這樣的XD 結果這陣子這樣下來,總覺得在外行眼中看起來很有趣 但是真的做起來,就是每天的To do list每天執行同樣的事情 就很無聊~   像是經營部落格 每天要想著今天要分享什麼
    Thumbnail
    最近趁著歐洲折扣驚喜購入Bottega Veneta這雙後繫帶鞋。乍看是百貨公司B1很常見的款式,不過細節的處理看得出特色,比方楦頭,恰到好處的比例讓寬腳板可以安心穿上又不失精緻形象,而雲朵般的皺摺繫帶也正好呼應了BV近期主打的pouch包款。整體設計搭配偏灰裸色加倍實穿,工作、休閒都很可以。
         前幾天廣州朋友J在IG上發佈他即將在九月份舉行的婚前派對,淡雅的水藍色海報上,印著她和她未婚夫的英文名,搭配上日文的「披露パーティー」以及中文的「派對」,很是J一貫的風格,簡約大方的設計襯托出主題但也不失巧思。
    嘿 不知不覺你就要滿29歲,正式來到20代的尾巴了!我想說的是這段時間謝謝你,陪我度過了多姿多采的20代。
     猫猫, 虽然我俩素未谋面,我也不知道你是男的女的.也可能是同志,但以我那副屌相来说,不合同志们的胃口,不够帅也不够中性.所以我估计你是一位漂亮的大美女. 在这一年不到的时间里面,我感受到你对我的情义,你对我的教训,像老师一样对我当头棒喝,恨瓦不成钢.你对我的爱与恨,我都照单全收,你的留言我都会细细
    Thumbnail
    完整標題:To be or not to be. That is a question. -- 試譯語出莎士比亞的劇作《哈姆雷特》(Hamlet -- Prince of Denmarke,創作於公元 1599 年 ~ 公元 1602 年期間) 中的這一小段台詞
    Thumbnail
    950327﹙一﹚ 考:國、英、數、地、史 珣:基本上,段考或模擬考的前一個晚上,我都會早一點睡,這樣考試時才會比較有精神。我記得之前的某個星期五我弄到一點才睡,結果隔天整天頭腦空白。 導師:說的是!作息要有規律才好! 爸爸:今天晚上,三樓絃歌不輟,珣和弟弟一會兒彈琴,一會兒吹笛,歌劇魅影和火影忍者
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
    Thumbnail
    Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
    Thumbnail
    傷了三年,調整體質 檢視一下漲很多的觀光股 有些是真的營收變好嗎? 如下圖,國賓近期營收算是普通,2020年到2022年的本業營業利益為負數,2022年主要是靠賣高雄國賓的股權,使得業外有一筆可觀的收入。 因為疫情的關係,國賓也是營收傷很大,營業利益均為負數,暫時靠業外獲利貼補一下;老飯店吸引力比較
    Thumbnail
    本文將帶您了解最近一週(03/27-04/02)的美股時事,包含市場概況、美股動態和下週關注等方面,讓您能掌握最新的投資資訊。
    Thumbnail
    近日最重大消息是,台灣從基隆一路到高雄、台東發現十六具無名屍,初估只發現五名台灣人、兩名越南籍。根據最新報導指出,檢警在一具浮屍身上,找到一張台商的名片,並透過上面資訊順利聯絡上該名台商,並在台商的協助下,聯繫上其中一位死者家屬。經家屬透露,死者是為了偷渡來台灣,所以才登上漁船......
    這陣子學習網路行銷的小小感覺 感覺就是…每天都要做一樣的事情 雖說網路行銷聽起來應該很有趣吧(至少在我學之前,印象是這樣的XD 結果這陣子這樣下來,總覺得在外行眼中看起來很有趣 但是真的做起來,就是每天的To do list每天執行同樣的事情 就很無聊~   像是經營部落格 每天要想著今天要分享什麼
    Thumbnail
    最近趁著歐洲折扣驚喜購入Bottega Veneta這雙後繫帶鞋。乍看是百貨公司B1很常見的款式,不過細節的處理看得出特色,比方楦頭,恰到好處的比例讓寬腳板可以安心穿上又不失精緻形象,而雲朵般的皺摺繫帶也正好呼應了BV近期主打的pouch包款。整體設計搭配偏灰裸色加倍實穿,工作、休閒都很可以。
         前幾天廣州朋友J在IG上發佈他即將在九月份舉行的婚前派對,淡雅的水藍色海報上,印著她和她未婚夫的英文名,搭配上日文的「披露パーティー」以及中文的「派對」,很是J一貫的風格,簡約大方的設計襯托出主題但也不失巧思。
    嘿 不知不覺你就要滿29歲,正式來到20代的尾巴了!我想說的是這段時間謝謝你,陪我度過了多姿多采的20代。
     猫猫, 虽然我俩素未谋面,我也不知道你是男的女的.也可能是同志,但以我那副屌相来说,不合同志们的胃口,不够帅也不够中性.所以我估计你是一位漂亮的大美女. 在这一年不到的时间里面,我感受到你对我的情义,你对我的教训,像老师一样对我当头棒喝,恨瓦不成钢.你对我的爱与恨,我都照单全收,你的留言我都会细细
    Thumbnail
    完整標題:To be or not to be. That is a question. -- 試譯語出莎士比亞的劇作《哈姆雷特》(Hamlet -- Prince of Denmarke,創作於公元 1599 年 ~ 公元 1602 年期間) 中的這一小段台詞
    Thumbnail
    950327﹙一﹚ 考:國、英、數、地、史 珣:基本上,段考或模擬考的前一個晚上,我都會早一點睡,這樣考試時才會比較有精神。我記得之前的某個星期五我弄到一點才睡,結果隔天整天頭腦空白。 導師:說的是!作息要有規律才好! 爸爸:今天晚上,三樓絃歌不輟,珣和弟弟一會兒彈琴,一會兒吹笛,歌劇魅影和火影忍者