Rails基本介绍(一)一个实体 && Remove Duplicates from Sorted Array && Remove Element

惯例


这篇先解题分享。
怕来不及打完,这样比较好修改...科科

Remove Duplicates from Sorted Array

题目连结:https://leetcode.com/problems/remove-duplicates-from-sorted-array
重点在於,不产生新阵列,由阵列直接删除重复数字,且例子有数字连续特性。

# @param {Integer[]} nums
# @return {Integer}
def remove_duplicates(nums)
end
def remove_duplicates(nums)
  #去除阵列中重复的数字,只保留单独一个
  #回传新阵列的数值是题目要求的。
end

解题方向也可以用for、while、loop等语法。

黑魔法!

def remove_duplicates(nums)
  nums.uniq!
  nums.size
end

有够黑...


Remove Element

题目连结:https://leetcode.com/problems/remove-element/
直接由阵列,去除阵列指定数值。

# @param {Integer[]} nums
# @param {Integer} val
# @return {Integer}

def remove_element(nums, val)
  #删除阵列内指定值
  #回传阵列长度(资料数)
end

#重点在於,不能用多一个array去运算,例如
nums - [val]
2.7.3 :063 > x = [1, 2, 4, 5] 
 => [1, 2, 4, 5] 
2.7.3 :064 > y = [2]
 => [2] 
2.7.3 :065 > x-y
 => [1, 4, 5] 

这边也先直接黑魔法下去。

def remove_element(nums, val)
  nums.delete(val) 
  return nums.size
end

这两题摆在一起,其实是因为有相同逻辑可以去用,什麽指针式,双指针。

Ruby的优点在於很多语法对於资料(阵列,杂凑),处理得非常完善,这些语法当然也是由许多逻辑经过良好的封装完成的。

有人说新手学Ruby很难,因为太多黑魔法,这点真的无法否认。像我这个菜鸟,学习初期真的很想了解这些黑魔法的运作原理,但CP值真的太低了,学怎麽用比较实在,但是逻辑能懂还是要能懂,在遇到没有黑魔法时,才解得出来。

待分享:指针演算法?


一个实体

实体就是一堆资料的集合体,通常招唤一个实体,会看到的是一杂凑。
首先Rails new一个专案,之後我们直接先做一个modle与一个controller

请确定终端机指令介面有到正确的资料夹。

$rails new test1212

test1212是专案名称,专案名称请随意。
但注意专案名称尽量不要取得与未来你会用到的model、controller、table名称相同。

$ rails greate model model_name

我model_name用role,应该会看到类似资料回传.

Running via Spring preloader in process 85403
      invoke  active_record
      create    db/migrate/20210811102936_create_roles.rb
      create    app/models/role.rb
      invoke    test_unit
      create      test/models/role_test.rb
      create      test/fixtures/roles.yml
create部分告知你创建了哪些资料,可以先停下看看资料夹多了哪些档案,test部分请先跳过。
这是用指令方式创建,也可以手动输入。(test很重要,重要到我不会XD)

有model不一定会有资料表(不一定有实体),也有可能一个model会有许多张资料表。
接着我们先执行做出资料库

$ rails db:migrate
== 20210811102936 CreateRoles: migrating ======================================
-- create_table(:roles)
   -> 0.0012s
== 20210811102936 CreateRoles: migrated (0.0012s) =============================

这代表着我们开始可以将由Role这个model建立出来的实体有地方放了。

待分享:测试,TDD

待分享:DB,SQL

migration这项,及使用rails greate model或rails greate model指令带参数时的注意事项不做分享,请看好书为你自己学Ruby on Rails
但请注意,一般用指令时,g model会顺便建立table,g migration不会顺便建立model。

接下来另一个指令

$ rails c
$ rails c --sandbox

不讲专有名词,就是rails的irb,sanbox指沙盒模式,随你玩,不会真的存档。
进入後

2.7.3 :001 > player = Role.new
   (0.9ms)  SELECT sqlite_version(*)
  TRANSACTION (0.1ms)  begin transaction
 => #<Role id: nil, created_at: nil, updated_at: nil> 
 
2.7.3 :002 > player = Role.create
  TRANSACTION (0.2ms)  SAVEPOINT active_record_1
  Role Create (1.2ms)  INSERT INTO "roles" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", "2021-08-11 13:04:04.122577"], ["updated_at", "2021-08-11 13:04:04.122577"]]
  TRANSACTION (0.1ms)  RELEASE SAVEPOINT active_record_1
 => #<Role id: 3, created_at: "2021-08-11 13:04:04.122577000 +0000", updated_at: "2021-08... 

你的画面可能跟我长得不一样,但请观察new与create这两个指令的差异。

为何书上都有的,我还这样打一遍,因为我初学时,rails c跟irb傻傻分不清楚,还有以为rails後一定也要建立controller与view才可以建立实体。

整理一下Role.create出来的实体

player = {
  id: 3, 
  create_at: "2021-08-11 13:04:04.122577000 +0000",
  updated_at: "2021-08-11 13:04:04.122577" 
}

实体其实就是一堆资料,电脑传输的是一堆资料。


下篇继续说明:怎麽用人看得懂的方式处理实体。(讲完等於讲完MVC了?)
网路上的好资料:Rails指令集


<<:  Day 48 (Node.js)

>>:  [Python] 关键字yield和return究竟有什麽不同?

[前端/JavaScript] 实作汇出excel下载按钮的超好用套件:ExcelJS(下)- 用React汇出excel (export excel)

有关於ExcelJS这个套件的教学与说明,请先看我的上一篇文章: [前端/ES6] 实作汇出exce...

二元树之 IF 上策 - DAY 17

假如用人数去施打疫苗图表 人数是概略计算非准确值 算一下总触发 IF 次数 348.5万 * 1 +...

Spring Framework X Kotlin Day 22 Spring Cloud

GitHub Repo https://github.com/b2etw/Spring-Kotlin...

第六章

大家在玩CMS之前应该都有先在本地端做测试的习惯吧,那应该会有遇到那种像是使用了XAMPP在本地端架...

不只懂 Vue 语法: 在 Vue 2 为何无法直接修改物件型别资料里的值?

问题回答 在 Vue 2,我们需要使用 .set() 等 Vue 语法来修改在 data 里的物件或...