原文發表於: 以太坊智能合約開發第五篇:字符串拼接—Solidity
上一篇,咱們實現了一個簡單的智能合約。用戶輸入什麼字符串,合約就原樣返回什麼。在文章最後拋出了一個問題:若是咱們事先在合約裏定義好 Hello 字符串,如何與 name 變量進行字符串拼接?javascript
在智能合約裏進行字符串的拼接可不是一件簡單的事情。本篇就來介紹智能合約裏的字符串拼接。html
咱們先用絕大部分語言都通用的鏈接符 + 和 . 來嘗試着修改代碼:java
//pragma關鍵字:版本申明。 //用來指示編譯器將代碼編譯成特定版本,以避免引發兼容性問題 //此處不支持0.4.0以前的編譯器,也不支持0.5.0以後的編譯器(條件爲 ^) pragma solidity ^0.4.0; //contract關鍵字:合約申明 //和Java、PHP中的class相似 //此處是申明一個名爲Hello的合約 contract Hello { string str="Hello "; //public: 函數訪問屬性(後續文章爲詳細闡述) //returns (string): 定義返回值類型爲string function say(string name) public returns (string) { return str + name; } }
<!--more-->node
運行 node deploy.js 部署腳本後,拋出了一個異常:微信
TypeError: Operator + not compatible with types string storage ref and string memory
return str + name;
咱們將其修改成 . 並嘗試部署後,也拋出一個異常:函數
TypeError: Member "name" not found or not visible after argument-dependent lookup in string storage ref return str . name;
說明在智能合約裏,+ 和 . 都不是鏈接符。
經過查閱 Solidity 官方文檔,咱們發現 Solidity 語言並不提供字符串鏈接符的語法:
那有沒有其餘方式,能夠實現字符串的拼接功能呢?工具
如下部分爲付費用戶專享福利,請點擊連接跳轉至個人專欄付費購買。經過閱讀如下部分,你將學習到:學習
第三方字符串工具合約:字符串的擴展處理(查找、分割、比較、拼接等功能)
智能合約裏第三方合約的引入
字符串的拼接實現
個人專欄:智能合約
智能合約開發QQ羣:753778670
區塊鏈
目前有幾套區塊鏈實踐的視頻課程(視頻+源碼),須要的可加我微信(kuangwenjie)私信我(付費):spa