以太坊智能合約開發第五篇:字符串拼接—Solidity

原文發表於: 以太坊智能合約開發第五篇:字符串拼接—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 語言並不提供字符串鏈接符的語法:
Solidity文檔
那有沒有其餘方式,能夠實現字符串的拼接功能呢?工具

如下部分爲付費用戶專享福利,請點擊連接跳轉至個人專欄付費購買。經過閱讀如下部分,你將學習到:學習

第三方字符串工具合約:字符串的擴展處理(查找、分割、比較、拼接等功能)
智能合約裏第三方合約的引入
字符串的拼接實現

個人專欄:智能合約
智能合約開發QQ羣:753778670
智能合約開發QQ羣區塊鏈


目前有幾套區塊鏈實踐的視頻課程(視頻+源碼),須要的可加我微信(kuangwenjie)私信我(付費):spa

  • 『區塊鏈』從零構建以太坊(Ethereum)智能合約到項目實戰
  • 基於Ethereum & IPFS的去中心化Ebay區塊鏈項目開發實戰
  • HyperLedger(超級帳本)Fabric
相關文章
相關標籤/搜索